关于指针的初步理解
作者:互联网
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