C语言之初步认识指针及指针变量和指针变量的大小

 一,初步认识指针

在认识指针之前,我们先来了解指针是干什么的。

  其实指针就像生活中一栋楼每个房间的门牌号,一栋楼如果没有门牌号想找到你要找到的房间是很难找到的。

   想对指针了解的到位就必须先知道计算机上的东西是如何在内存里储存的。

   计算机上是有多根地址线的,一根地址线会传入高低电平的信号,在传入计算机里之前会把这个高低电平的信号转换为数字信号1/0。(每根地址线传入的数字信号表示一个bit位)

   计算机里的32位/64位说的就是地址线,32位的机器上是有32根地址线的,64位的机器是自然是64根地址线。(而C语言把这个地址叫作指针)

 比如上图内存在计算机上特别重要,所有程序都是在内存里进行的,所以把内存分成一个个小的内存单元,内存单元的存储单位是字节(byte),每个内存单元大小是1字节,为了能够访问这些单元,就给这些内存单元进行了编号,而这个编号就称为地址。(每个地址是以16进制存储的)

 二,指针变量

#include 

int main()
{
	int a = 10;
	int* p = &a;
	*p = 20;
	printf("%d\n", a);
	return 0;
}

C语言之初步认识指针及指针变量和指针变量的大小_第1张图片  

    我们口头上经常说的指针基本上都是指针变量, 以上这段代码的意思是定义一个变量a不用多说,通过取地址符号(&)来把a变量的地址存入p里面,再把p定义为int类型的指针(*表示解引用),*p=20,是通过解引用操作符找到存放在p里面a的地址然后通过地址把a变量的值更改了。(通过以上代码的了解就知道了指针变量是存放地址的变量)

  三,指针变量的大小

64位平台下指针变量的大小:

  C语言之初步认识指针及指针变量和指针变量的大小_第2张图片

 32位平台下指针变量的大小

C语言之初步认识指针及指针变量和指针变量的大小_第3张图片

   通过以上两个图可以知道指针变量的大小为4/8,在64位平台下指针变量的大小是8个字节,

而在32位平台下指针变量的大小是4字节。

  原理是之前说过的一根地址线传入的数字信号为一个bit位,而1字节 == 8个bit位在32位平台其实显示的就是32个bit位也就是4个字节,64位平台显示的就是64个bit位转换后就是8个字节。

你可能感兴趣的:(C语言,c语言)