程序
double str1[10];
cout << sizeof(str1) << endl; //此时求数组所占内存大小 80
cout << sizeof(&str1) << endl;//求数组首地址指针所占内存大小 win32下4
std::cout << str1 << std::endl;//数组首地址 x
std::cout << &str1 << std::endl;//数组首地址 x
std::cout << str1+1 << std::endl;// x+8
std::cout << &str1 + 1 << std::endl; // x+80
输出
80
4
012FF884
012FF884
012FF88C
012FF8D4
注意如果数组类型是char的时候,会出现一些问题,数组名表示的还是首元素的地址,但是用cout输出的时候,会输出数组里面的全部字符,如果需要地址,则用取址符号&或者用std::static_cast<cosnt void *>(数组名)
强制转换。
char str1[10]="faaf";
cout << sizeof(str1) << endl;
cout << sizeof(&str1) << endl<<endl;
std::cout << str1 << std::endl;
std::cout << &str1 << std::endl << endl;
std::cout << str1+1 << std::endl;
std::cout << &str1 + 1 << std::endl;
std::cout << static_cast<const void*>(str1) << std::endl;
结果:
10
4
faaf
010FFEE0
aaf
010FFEEA
010FFEE0