指针

来源:互联网 发布:租用网络服务器多少钱 编辑:程序博客网 时间: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