1.内存
内存被分为很多内存单元,每个内存单位的大小为1字节。
对于32位电脑,有32根地址线,每根地址线可以发出脉冲(1/0),对此每个内存单位就可以被编号,例如0000 0000 0000 0000 0000 0000 0000 0001,0000 0000 0000 0000 0000 0000 0000 0010,对此32位电脑便可以编号2的32次方个内存单元,一个内存单元为一字节,所1以对应4GB,64位电脑有8GB或16GB
2.指针
对于一个局部变量,其在创立时会被安置在栈区,占用多个内存单元,我们用第一个内存单元的编号来表示其地址,用*p来存放其地址,此时p就是指针变量,那为什么存放地址的量会叫变量呢?对于局部变量,其生命周期在其所在大括号内,一旦运行完成,其便会被销毁,下次运行便会重新创建,地址也会发生变化,因此称其为指针变量
int a=10;
int*p=&a;
*为解引用操作符,*p就是对p这个指针变量进行解引用,通过地址找到a,int指对应变量的类型。int*p=20;
printf("%d\n",a);
此时打印结果为20
指针变量也有大小,我们可以在计算机中输入printf("%d\n",sizeof (int*));来查看指针变量的大小
为八字节(对于64位操作系统)
问题:
1.int a=0;
char*p=a;
并不知道当指针变量前不是其对应对象的数据类型时,其含义是啥
2.电脑上查看地址时,采取16进制(1.2.3.4.5.6.7.8.9.a.b.c.d.e.f.g),但是监视变量地址,其地址会倒置