其他分享
首页 > 其他分享> > 关于指针的初步理解

关于指针的初步理解

作者:互联网

1.内存的理解

要学习指针,要先理解内存,内存是计算机内部的存储设备,也叫内存储器和主存储器,用于程序的运行和数据的交换,内存的存储单元是字节,如果将内存划分为一个一个格子,

那么每一个字节的大小就可以看成一个个格子的大小,这就是内存单元,每一个格子都有一张身份证--“地址”,地址用来标识每一个存储单元,方便用户对存储单元中的数据进行正确的访问。实际上地址就是一行二进制数字,对于32位平台来说,一行编码有32位,一共有2的32次方种编码,即有这么多个字节,总字节大小换算成gb为4g,这也侧面说明32位平台最多支持4g内存,64位计算机最多支持17179869184g内存。

2.指针

自己的理解是,指针实际上就是内存的地址,指针指向某一个变量,实际上指的是这个变量的地址, 指针变量是指存放 内存单元 的地址的变量,指针变量的表达形式是:

类型说明符* 变量名;

例如:int* a;

 

#include<stdio.h>
int main() {
    int as = 10;
    int* a;
    a = &as;// &as "&"是取as变量的地址//总的来说将as的地址存放于指针a
    printf("a=%p \n",a);
    printf("&as=%p \n",&as);
    printf("as=%d \n",as);
    *a = 20;//取a的地址的值
    printf("*a=%d \n",as);
    return 0;
}

指针的大小取决于平台的位数:

#include<stdio.h>
int main() {
    int as = 10;
    int* a;
    char ab ='f';
    char* b;
    b = &ab;
    a = &as;// &as "&"是取as变量的地址//总的来说将as的地址存放于指针a
    printf("a=%p \n",a);
    printf("&as=%p \n",&as);
    printf("as=%d \n",as);
    *a = 20;//取a的地址的值
    printf("*a=%d \n",as);
    printf("&ab大小=%d \n",sizeof(&ab));
    printf("&as大小=%d \n", sizeof(&as));//对于64位平台而言,不同类型的地址的大小都是8位,
                                          //同样对于32位平台而言,不同类型的地址的大小都是4位。
    return 0;
}

 

 

 

标签:int,32,初步,地址,理解,内存,printf,指针
来源: https://www.cnblogs.com/xiao-zhiqiang/p/16325486.html