<span style="font-size:24px;">定义一个整型变量
int a = 10;
定义一个指针变量,和定义整型变量类似,也是包含三部分:数据类型 变量名=初值
只不过指针变量用来存储地址而已
int *p = NULL;
//指向关系
p = &a;//将a的地址赋给p
printf("%d\n", a);//直接访问 内存单元中的数据
//*p ,此时的作用根据指针变量存储的地址,找到对应的内存单元,将内存单元上的数据读取出来。
printf("%d\n", *p);//间接访问 内存单元数据
//对于指针变量类型来说,所规定的存储空间的大小只和操作系统的位数有关,32位的操作系统位4个字节,64位的为8个字节。
int *指针变量类型,p指针变量名,null指针变量初值
int 的作用:(1)当自增时,增加几个字节大小,(2)当存取数据时,一次性读取几个字节。
定义时,*告诉编译器,后面的变量时一个指针变量,用来存地址的
赋初值为null,让指针变量指向一个无效的空间
int *p1 = NULL;
当对p指向的空间进行操作时,p必须指向一个有效的空间(明确的空间)
指针变量的重新赋值,叫做指针重指向,我们就看最后一次指向谁即可
p1 = &c;
printf("%d\n", *p1);
指针与数组
int a[5] = {10,11,12,13,14};
int *p = NULL;
让指针指向数组的首地址(数组名a就代表数组的首地址,第一个元素的地址)
p = a;
printf("%d\n", *p);
p ++;//p = p + 1,意味着加4个字节
printf("%d\n", *(p + 1));
printf("%d\n", *(p + 4));
当把数组首地址赋给指针变量p之后,指针变量就可以当作数组名来使用
数组名是一个常量,不可对其更改
/** * 字符数组str需要存储字符,所以把常量区中frank字符串的内容拷贝到数组中,
而对于数组a来说,数组中的每一个元素都是一个字符型的指针变量,指针变量用来存储地址,所以将常量区的frank,duck,iphone的开始地址拷贝到对应对变量中,通过指针操作的是常量区的内容
*/
常量区的内容不可更改</span>
指针
最新推荐文章于 2025-01-16 11:35:07 发布