指针
来源:互联网 发布:租用网络服务器多少钱 编辑:程序博客网 时间:2024/06/17 01:42
<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>
0 0