指针名和数组名的区别¶
参考:
有如下区别:
- 可以用数组名初始化指针,但是数组名必须用列表进行初始化
- 数组名指向固定内存地址,不能修改,而指针名可以指向其他地址
- 使用
sizeof
计算两者所占的内存字节数,数组名返回整个数组所占字节数,而指针名返回单个地址的字节大小(当前CPU
的最大位数:8
字节)
测试代码如下:
int arr[3] = {1, 2, 3};
int *p = arr;
cout << arr << endl;
cout << p << endl;
cout << arr[1] << endl;
cout << *(p + 1) << endl;
cout << sizeof(arr) << endl;
cout << sizeof(p) << endl;
- 新建整型数组
arr
并初始化 - 新建整型指针
p
,指向数组arr
- 打印数组名和指针名,此时两者均指向数组首地址
- 通过数组方式和指针方式访问第二个元素
- 打印数组名和指针名所占内存字节数
结果如下:
0x7fff2b649180
0x7fff2b649180
2
2
12
8
总的来说,数组名就是指针常量,而指针名是指针变量