字节长度 : 4个
存储的是地址
地址只有4个字节
int *p;定义一个一级指针
int **p;定义一个二级指针
int (n个*)p;定义一个n级指针
int a=5;
int *p=&a;将a的地址存入指针b
例子
变量地址 变量名(0x002DFD80 中存的5 05 00 00 00)
0x002DFD80 a
0x002DFD74 p
0x002DFD68 p1
0x002DFD5C p2
0x002DFD50 p3
变量名 输出内容
a 5
p 0x002DFD80
p1 0x002DFD74
p2 0x002DFD68
p3 0x002DFD5C
指针名 指针输出内容
*p1 0x002DFD80
*p2 0x002DFD74
*p3 0x002DFD68
**p2 0x002DFD80
**p3 0x002DFD74
***p3 0x002DFD80
*p3 0x002DFD5C
**p3 0x002DFD68
***p3 0x002DFD80
****p3 5
指针存放的是一个地址 *取出该地址的值 如果该值还是地址 那么**便可取出(该地址)中的值(或是地址)
数字5存放在代码段上
int *p;
*p=5;
编译成功! 语法没错 但是执行报错 因为p中存的地址为CC CC CC CC(DEBUG中) 而CCCCCCCC这块地址是不允许访问的所以无法将5存入
int *p;
***p=5;
编译无法通过!因为编译器检查时发现你定义的是一个一级指针而不是一个三级指针
int *p;
***(int***)p=5;
可以通过!运行出错
因为p中存的地址为CC CC CC CC(DEBUG中) 而CCCCCCCC这块地址是不允许访问的 所以无法将5存入
int *p;
p=5;
运行通过!可以输出p;但是不能输出*p因为p中存的是05 00 00 00
而*p访问的是0x00000005的内容 这是把P的内容当成地址访问了,这是有可能出错的
指针是通过地址一级一级的访问的
本人新手欢迎各指导 这是我的笔记和学习总结