可能重复:
数组名称是 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
上面的错误)。是对的吗?