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

2024-01-07 18:19:40

初与指针邂逅

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

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真兄弟啊,有问题他真教!

文章来源:https://blog.csdn.net/ROSEK1ING/article/details/135397072
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。