ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

关于指针的初步理解

2022-05-30 01:31:18  阅读:185  来源: 互联网

标签:int 32 初步 地址 理解 内存 printf 指针


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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有