C语言,指针和变量的地址是一个意思吗?

当然不是。


1、指针到底是什么?

比如说定义了一个变量a和一个指针p。

int main()
{
    int a = 10;
    int *p = &a;

    printf("指针的值是:%d",p);
}

可以得到p的值:
在这里插入图片描述
可以知道指针p不过也是一个需要开辟内存空间的变量,只不过里面存放的是另一个变量的地址。

既然是这样,那么能不能通过另一种方式来检验指针其实并不特殊呢?把上面代码 p 的定义修改一下,如下:

int main()
{
    int a = 10;
    int p = &a;

    printf("指针的值是:%d",p);
}

运行代码:
在这里插入图片描述
可以看见,整形变量其实是可以存放某个变量的地址的。但是,我们不可以把整形变量里面的值当作地址来访问其他变量,也就是上面的代码不能够通过 *p 来访问到 10。

我个人理解,完全可以用整形变量来存地址,但是为了方便我们知道哪些地方存放的是地址,哪些是可以用的数据,不然我们把数据当作地址来找一个其他不存在的数据那不是乱套了。

也就是说,我们定义了指针变量,主要目的不是为了查看指针变量的地址,而是想通过它找到对应的值。所以,我们经常看见的用法是 *p = xxx , 而不是直接使用指针变量p。

2、指针与地址的区别?

说白了,指针就是某个类型的数据,里面存放的才是地址。

要说一个意思,变量名和地址才是一个意思,变量名就是代表这个变量存放的地址。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值