有关初识指针(C语言)32位等

初与指针邂逅

计算机种所有程序的运行都是在内存中进行的。

32位与64位(bit位)

32位--32地址线(cpu从内存或硬盘中取数据时,会根据地址线传来的地址来确定数据的存储单元,后通过数据线来读取数据)--物理线--通电--1/0(1通电?0无电?)

64位同理

从而实现了电信号-->数据信号(0,1组成的二进制)的转变

32位机器通常是32个bit来组成一个地址。

32位组成的所有可能性(2的32次方)

000....000(总32个)---------------------->一个内存编号0       总共2^{32}个序列(4GB)

              +1                                                                  1

00....0002(总32个)                                                  2     

....                                                                                .......

....                                                                                ......

111...1111(总32个)                                                   2^{32}

2^{32}个序列都可以做为内存的编号(内存单元的地址)

2^{32}个内存单元每个单元是一个字节(byte),然后分配地址,一个地址最小一个字节??

内存地址本身并不是特定大小的数据,而是用来指示存储器中位置的标识符

在大多数计算机体系结构中,内存地址通常是以字节为单位进行编址的。因此,每个内存地址通常对应一个字节的大小

然而,在32位系统中,内存地址本身通常是4个字节(32位)大小,这是因为它需要足够的空间来存储地址。因此,内存地址的大小通常是由计算机体系结构和操作系统决定的

vs软件中内存查看的实例

vs软件中按F10(变成调试模式)--调试--窗口--内存与监视     地址是&a

int a=10; 查看时为ox(16进制)调试时得运行到int a=10的下一行

0a是一个字节 00是一个  0a 00 00 00是四个字节 对应int大小的四个字节

16进制中a是10,b是11.....

注意!!! &a其实拿到的是四个字节中的第一个字节(小的)的地址

int *pa=&a;

int是说明pa执行的对象(a)为int的类型的,        pa用来存放地址,在c语言中pa叫做指针变量,*为解引用,*pa说明了pa是指针变量,*pa就是通过pa中的地址找到a的 。              有(*pa)=a的意思。

int a=10;
*pa=20;
printf("%d,a);

打印出a等于20;

有关指针的大小

无论什么类型的变量,指针的大小都相同,其取决于存地址要多大,

比如说机器是32位的,则指针大小都是4byte(32bit) 64位则是8byte

x86是32位 x64是64位。

chatgpt真兄弟啊,有问题他真教!

  • 44
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值