数组名使用的三个特殊的地方
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修饰的变量。
相关文章推荐
- 使用splice删除数组时,需要注意的地方
- leetcode-java.T015_3Sum---给定一个n个元素的数组,是否存在a,b,c三个元素,使用得a+b+c=0,找出所有符合这个条件的三元组
- 函数指针数组的应用,但在类内作为成员使用,需要特殊处理,指针类型要匹配
- php 数组当中一些特殊使用
- ALAssetsLibrary的使用问题:获取到ALAsset的thumbnail或者其他属性保存数组,在别地地方为nil的问题处理
- linux三个特殊权限setuid、setgid和stick bit使用详解
- linux三个特殊权限setuid、setgid和stick bit使用详解
- 把一个数组变成三个栈使用(算法)
- 数组的介绍以及其详细使用需要注意的地方
- 类的三个特殊成员Copy Constructor、Copy-Assignment Operator、Destructor重载与使用
- 组合使用构造函数模式和动态原型模式、寄生构造函数模式(创建具有额外方法的特殊数组)
- 使用apply方法处理数组的三个技巧[译]
- C#中数组、ArrayList与List三个对象的使用区别
- 关于C#中数组、ArrayList与List三个对象的使用区别
- 1、将数组中的元素再定义为特殊的名字方便程序中使用
- C#使用数组实现三个相同的随机数
- PHP 数组处理使用foreach、list、each等三个函数详解
- linux三个特殊权限setuid.setgid和stick bit使用详解
- 在PostgreSQL中使用数组时值得注意的一些地方
- 使用apply方法处理数组的三个技巧[译]