为了账号安全,请及时绑定邮箱和手机立即绑定

形参的指针赋值问题

声明 change 函数时,如果是 void change(int a, int b),调用时如果是 change(c , d),那么我们知道是把 c 的值赋予change函数中的a,d 的值赋予change函数中的 b。

这里的change函数变成了 change(int *a, int *b), 调用时为 change(&a, &b),按理来说,应该是把 &a 的值(即变量 a 的内存地址)赋予 *a, &b 的值赋予 *b,可是按教程的意思,这里是把 &a 的值赋予了 a,而非 *a, 为什么呢?

正在回答

3 回答

int*可以理解为一种数据类型,和int一样,int*是申明一个地址变量a,a用来接收传入的地址

0 回复 有任何疑惑可以回复我~
#1

六个蒸蛋 提问者

嗯。 但是有时像 “int a, *b;”这样写时,让人感觉 *b 是个一个整体,而非将 int* 看成一个整体,这样就容易误以为指针变量是 *b 而非 b。
2019-11-18 回复 有任何疑惑可以回复我~

知道了, int* a,声明的是变量 a,而非 *a,且这里的 a 是指针变量,储存的是内存地址。所以这里是把 &a 的值赋予了 a。

0 回复 有任何疑惑可以回复我~

int *a 是定义一个指向int类型数据的指针a,这里的*表示a是个指针,而不是你理解的取a中内容

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Linux C语言指针与内存
  • 参与学习       116432    人
  • 解答问题       250    个

指针-C语言的核心,代领大家对c语言有更加深刻的理解

进入课程

形参的指针赋值问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信