0
点赞
收藏
分享

微信扫一扫

C指针与地址_超级基础理解

松鼠树屋 2022-05-05 阅读 54

首先是关于bit(比特)和byte(字节)的理解

32位平台指针大小是四字节(byte),1byte=8bit,64位平台指针大小是八字节

对于32位的机器,假设有32根地址线,那么假设每根地址线在寻址的是产生一个电信号正电/负电(1或 者0) 那么32根地址线产生的地址就会是:
00000000 00000000 00000000 00000000(32位)

2^32 个 Byte(2^32种地址排列组合,所以可以存2^32个不同的地址)

4*8=32(32位四个字节,1个字节8个比特位)

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000(64位)

1024 = 2^10

2^32 = 4 * 2^10 * 2^10 * 2^10 

2^32 Byte = 2^32 / 1024 KB = 2^32 / 1024 / 1024 MB = 2^32 / 1024 / 1024 / 1024 GB  = 4 GB

指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向 (points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。

     1	#include <stdio.h>
     2	
     3	int main()
     4	{
     5	  int a=10;//在内存中开辟空间给变量a
     6	  int *p = &a;//'&'将a的地址取出传递给p,p就是变量指针,int*定义p为指针变量
     7	  printf("%p\n",p);
     8	  printf("%p\n",&a);//打印a的地址
     9	  printf("%d\n",*p);//解引用p,打印a的值
    10	  return 0;
    11	}

 

0x7ffdb5637f94(16进制表示)是a的地址

10是a的值

指针变量p存放a的地址,通过*解引用p,得到a的地址指向a的值

举报

相关推荐

0 条评论