设为首页 加入收藏

TOP

C/C++中数组名的含义
2013-04-24 12:15:33 来源: 作者: 【 】 浏览:653
Tags:C/C 含义

  C/C++(www.cppentry.com)中的数组名是个很奇怪的东西,它到底代表什么呢?

  对于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]

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++之指针和引用的区别 下一篇标准C++中有四个类型转换符

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: