- 指针 就是地址
通过代码查看a的内存分配地址
&取地址运算符
&a取到a 的地址,并返回
%p 打印地址的占位符
printf(“%p\t”,&a); - 指针变量的定义 :存地址
定义格式:数据类型 * 变量名 = 初始值
int p = NULL;// 表示P是一个指针变量 ,不是运算符
- 取值运算符 取到地址中得那个值.
- *p 代表取到 P 指向的内存中存储的数据
单独的*p表示取值,*p = ? :就相当于内存中存入数据 不仅取到地址 还有地址里面的值
4.指针在内存中占几个字节 :与操作系统有关
长度打印
5.数组名(数组的首地址) 与指向数组首地址的指针变量的区别
1⃣数组名(数组的首地址)一个常量地址不能被修改
PS: a = NULL; error
2⃣数组名(数组的首地址),用sizeof计算得到的结果,整个数组所占的字节数,而用sizeof计算指向数组元素首地址的指针变量得到是一个定值4或者8
printf("%lu\n",sizeof(p1));
printf("%lu\n",sizeof(short *));
printf("%lu\n",sizeof(char *));
printf("%lu\n",sizeof(float *));
6.修饰指针变量数据类型的作用;
a:指针变量数据类型,决定*(取值运算符)取多少个字节的数据
定义指针的数据类型 一定要和指向数据的数据类型一致.才能完整取出数据.
b.指针类型,决定指针变量+1操作时,跳转多少个字节
7.指针与字符串的应用
charstring[]="cangLaoShi";
printf("%s\n",string);
- 数字 让字符串从第几个出来 从指针指向那个地址开始向后输出
printf("%s\n",string+2);