<分区>
Possible Duplicate:
Is array name a pointer in C?
所以,我通常使用指针来声明数组。
但是,您也可以使用方括号表示法声明数组:
char a[] = "ok" ;
char b[] = "to" ;
char *pa = a ;
cout << "a " << sizeof( a ) << endl ; // 3
cout << "pa " << sizeof( pa ) << endl ; // 4
奇怪的是,sizeof( a )
将是数组的实际大小(以字节为单位),而不是指针的大小。
我觉得这很奇怪,因为指针在哪里呢?方括号声明的数组实际上是一种具有 (sizeof(char)*numElements)
字节的数据结构吗?
此外,您不能将 a 重新分配给 b:
a = b ; // ILLEGAL.
这是为什么呢?似乎 a 是数组 而不是指向数组的指针(“左操作数必须是左值” 是 a = b< 的错误
上面)。是吗?