数组名的三个特殊话
数组名的三个例外
1.数组名做长度 sizeof(ar) 只关心大小 等于长度
2.取数组地址 指针指向数组地址 数组地址= 大小加类型 int *p[10] 数组 是个空间 每个空间放指针 时指向int的指针 p标识符 数组名 放的整形类型的地址 存放地址 int (*s)[10] 指针 指向数组 十个空间 每个空间放的整形 s标识符 s开辟四个地址 存放变量
3.数组初始化一个引用 数组名=大小加类型 int ar[10] ={0}; int (&b)[10] = ar; 剩下都是首地址
下一个函数调用时,空间全部覆盖成cccccc
栈帧 于函数
从底到顶 从高到低
函数变量 从高地址到低地址赋值(从下到上)
数组 从上到下 是赋值的从左到右 和参数入栈一样 从(从右向左 从下到上)(从左到右)从上到下
二级指针和数组的关系
指针都有两个值 一个是自身的值 一个是指向的值
p = 地址(自身的值)
*p = 数值(指向的值)
**p =&p 二级指针指向一级指针的地址
a = 0012ff00
*a =10
&a = 0012fe08
p=0012fe08
*p=0012ff00
*s =p
**s = *p = a;
int a = 0x123456;
int *ip =&a;
char *cp = &a;
cp == char *
&a == int *
小端存储 高地址存高位
大端 高地址存低位
char指针 自增+1
int 指针 自增+4