|
发表于 2020-4-12 00:27:32
|
显示全部楼层
本帖最后由 howzyao 于 2020-4-12 00:29 编辑
int a[10];
&a;
a[0] == 一个int,同时是首个元素
a没有实际int意义,只有关联int的意义,a就是一个指针,指向int [0]~[9]这组数组的意思,我把它叫做数组头,a指一组 被连续占用的 内存的 一个标签.
cout<< a<< " "<<&a<<endl; //一定是一样的.
另外,当指针入实参时,地址发生变化,是由于函数机制造成的:
当array[]入参时,系统把array的实际地址中的值,也就是所有的0~9的这些内存中的一串值,一并复制到一个新的地址,且在当前函数作用域有效,当函数结束时,
这些临时复制过来的所有值,都将被释放,而array[]这个实参,所指向的这片连续内存中的值,是原封不动地不受破坏.
实际上array[]或写成*array 也值得一试,
这样效果也应当是一样,*号,就是解除引用操作符,它解除指针array所指向的内存地址, 而引用这个地址中的值,我是这么理解它的意思的,供大家指正.
0~9这10个下标的10个元素,可以看作独立的int它们分别处于不同的内层中,由于是数组,所以,两个相邻int的内存地址,是有意义的存在,
需要我们自己去想,这是学习C++内存管理的一种常识性基础,看多了,就可以看出一些规律来.这不会太难明白.
这下明白了一切没有?可以的话,赏个分? |
|