对C语言指针的理解

C语言中有很多变量,比如说我们常见的int,float变量,而指针变量也是一种变量,不过不一样的是,指针变量里面存放的是地址。
假设下面的图片是计算机的内存,每一个小格格代表一个字节(1byte),一字节等于8个比特位(1byte=8bit,能存放8位二进制数)。
在这里插入图片描述

在C语言中,int占4个字节,char占1个字节。我们可以把这一个小格格想成是一个个小房间,我们根据住进去的人数分配房间,比如说一大家子人需要五个房间,如果就一个人住一个房间就够了,如果一个人住五个房间就会造成空间的浪费,这也是设置不同变量的意义。
在指针运算中主要用到两个运算符,一个是&,叫做地址符,一个是*,称为间接运算符。&用来获取变量的地址,*用来获得地址的对应的值。前面说到,可以讲小格格看成一个个小房间,那地址就可以看作是这些房间的门牌号,我们可以通过门牌号找到里面住的小朋友。
举个例子:

int a = 7;
int b = *(&a)

先通过&获得a的地址,再通过*获得a的地址所对应的值,也就是7,所以b的值与a的值是相同的。
声明int,char之类的变量格式是:

int a;
char b;

生成指针类型的变量的格式是:

int* a;
char* b;

即将放在int后或者变量前。
为什么地址类型还要分为int型地址,或者char型地址呢,门牌号不应该都是一样的吗?我们可以这样想,因为不同的房子大小不一样,有的门牌号是四个人住的房子,有的是一个人住的房子,所以通过int
a;char* b;就可以知道该地址指向的变量所占的字节数是多少。
在这里插入图片描述

int a = 7;
int *b = &a;
int c = *(&a)

在上面这些声明中,&a就是a的地址,a的值是7,int *b = &a;即将a的地址赋给b。
也就是说:

a = 7;
b = &a;
*b = 7;
c = 7;

那&b代表什么意思呢?我们知道,b存放了a的地址,&b就是存放a这个变量地址的地址。可以这样理解,&b这个门牌号里的房子,里面放着a的门牌号,我们可以通过&b的门牌号,进去之后得到b的值,即a的门牌号,然后可以通过a的门牌号,进去a得到变量的值。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值