bob*_*obo 1 c++ arrays square-bracket
可能重复:
数组名是C中的指针吗?
所以,我通常使用指针声明数组.
但是,您也可以使用方括号表示法声明数组:
char a[] = "ok" ;
char b[] = "to" ;
char *pa = a ;
cout << "a " << sizeof( a ) << endl ; // 3
cout << "pa " << sizeof( pa ) << endl ; // 4
Run Code Online (Sandbox Code Playgroud)
奇怪的是,sizeof( a )将是以字节为单位的数组的实际大小,而不是指针的大小.
我发现这很奇怪,因为指针在哪里呢?方括号声明的数组实际上是一种带(sizeof(char)*numElements)字节的数据结构吗?
此外,您无法将a重新分配给b:
a = b ; // ILLEGAL.
Run Code Online (Sandbox Code Playgroud)
这是为什么?似乎a 是数组而不是指向数组的指针("左操作数必须是l值"是a = b上面的错误).是对的吗?
这是为什么?似乎a是数组而不是指向数组的指针("左操作数必须是l值"是上面a = b的错误).
a确实是一个数组类型而不是指针类型.您无法分配给数组,因为它是一个不可修改的左值.
当BTW数组传递给函数时,它会衰减指向第一个元素.
| 归档时间: |
|
| 查看次数: |
3331 次 |
| 最近记录: |