C_C++中数组名的含义

文章作者 100test 发表时间 2007:03:10 17:17:02
来源 100Test.Com百考试题网


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]

相关文章


数据库系统2-4:专门关系运算
c与c 程序连接问题
C教程-----输入输出函数及控制流程语句(4)
C_C++中数组名的含义
北京:2004年计算机等级考试明起查分
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛