您的位置:首页 > 其它

数组名使用的三个特殊的地方

2019-03-08 17:24 49 查看

一个数组的属性包含有类型和大小,在编译期确定。以下三种情况都会进行类型检查。
int ar[10];
1、sizeof(ar)
计算数组的大小,这里表示的意思是数组名而不是数组首元素的首地址,这里会进行类型的检查,sizeof得到的结果就是选用了数组的大小这个属性。
2、int (&br)[10]=ar;
这里的ar表示的数组名,表示数组的引用,给数组ar取了一个别名br;
3、int(*p)[10]=&ar ;
p表示的一个数组指针,指向一个数组的首地址。注意:这里的*p必须要加(),不然就会变成 int*p[10]=ar; []的优先级大于*号,变成一个指针数组,p[10]里面存的是整型的指针。

其余的情况是把数组名退化为指针表示数组首元素的首地址

ar表示的数组首元素的首地址;
&ar表示的数组的首地址;
&ar[0]表示的是数组第一个元素的首地址。

扩展:
char *str[]={“hello”,“world”};
这里在栈区只是存放各字符串的首字母首地址,字符串常量都存放在.rodata段里面,这里面主要存放的是字符串常量和const修饰的变量。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: