前言
记录指针和数组容易混淆的知识
,避免笔试中
再次犯错。
0x1 代码
#include <iostream>
int main()
{
short cookies[] = { 1,2 };
std::cout << cookies << " = array address, \n";
std::cout << cookies + 1 << " = array address+1, \n";//加一个元素长度
std::cout << &cookies << " = array address, \n";
std::cout << (&cookies) + 1 << " = array address+1, \n";//加整个数组长度
std::cout << sizeof(cookies) << std::endl;//4个字节大小
std::cout << sizeof(&cookies) << std::endl;//内存地址占4个字节
return 0;
}
0x2 总结
- 数组名其实就是
指针变量
- 数组名+1
=>
第一个格子的地址
+一个
数组元素的大小; - &数组名+1
=>
第一个格子的地址
+ 整个数组总元素
的大小 sizeof(数组名)
编译器会去计算这个数组有多少个以元素大小
为基本单位的元素sizeof(&数组名)
编译器会去计算这个格子所在的内存地址的大小