VC语言

本类阅读TOP10

·VC++ 学习笔记(二)
·用Visual C++打造IE浏览器(1)
·每个开发人员现在应该下载的十种必备工具
·教你用VC6做QQ对对碰外挂程序
·Netmsg 局域网聊天程序
·Windows消息大全
·VC++下使用ADO编写数据库程序
·VC++学习笔记(四)
·非法探取密码的原理及其防范
·怎样在VC++中访问、修改注册表

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
C/C++中数组名的含义

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

    C/C++中的数组名是个很奇怪的东西,它到底代表什么呢?
   
    对于char array[n](n是一个常数),大概有这么几种语义:
    <1> const char*   <2> char [n]   <3> char (&)[n]

    举例如下(VC.NET 7.1下编译):

    <1> char *p = array;       // array表示const char*

    <2> char (*p)[n] = &array; // array表示char [n]

    <3> char (&p)[n] = array;  // array表示 char (&)[n]

    <4> void foo(char a[n]);
        foo(array);            // array表示const char*

    <5> void foo(char (&a)[n]);
        foo(array);            // array表示char (&)[n]

    <6> void foo(char (*a)[n]);
        foo(&array);           // array表示 char [n]

    <7> char *p;
        array = p;     // "error C2440,无法从char*转化为char [n]",
                       // 因此array表示char [n]

    <8> char other[n];
        array = other;  // "error C2106, '='左操作数必须为L值", 
                        // 因此array表示char [n]

    <9> long i = 0;
        (long &)array = i;   //实际改变的不是array本身的值,而是它代表
                             // 的数组中的头4个元素(32位),
                             // 因此array代表的是char [n]




相关文章

相关软件