数组标识符a和&a表示意义的区别

来源:互联网 发布:稀疏矩阵聚类 编辑:程序博客网 时间:2024/04/30 03:31
#include <iostream>using namespace std;//数组标识符a和&a表示意义的区别int main(){int a[]={1,2,3,4,5};//a表示是一个一维数组的指针,这个数组中的每个元素都是一个intcout << a << endl;//&a表示是一个指向一维数组的指针,记录了一个5个单元的一维数组的首地址cout << &a << endl;//所以a+1相当于a+sizeof(int)cout << (a+1) << endl;//所以&a+1相当于&a+5*sizeof(int)cout << (&a+1) << endl;cout << *(&a+1) << endl;//直接输出是一个地址是因为&a中存储的内容本身就是一个地址cout << *((int *)(&a+1)-1) << endl;//直接进行类型强转,使用的是&a+1的地址,但是将这个单元的内容用int来呈现//就像昨天遇到的把A类的指针强制转换成B类,之后使用B类的函数输出A的数据成员一样。(面试宝典P69)//指针类型的强制转换不会影响记录的内容,只是改变寻址的方式,即+1或者-1的时候跳跃的单元数不同(面试宝典P35)cout << endl;int b[2][3];//b表示是一个一维数组的指针,这个数组中每个元素又另一个一维数组的指针//b[0]是第一个一维数组的首地址(包括三个元素);b[1]是第二个一维数组的首地址。cout << b << endl;//&b表示是一个二维数组的指针,记录了一个2*3的二维数组的首地址cout << &b << endl;//所以b+1相当于b+3*sizeof(int)cout << b+1 << endl;//所以&b+1相当于&b+2*3*sizeof(int)cout << &b+1 << endl;return 0;}


 

原创粉丝点击