2 moefish Moefish 于 2015.06.04 13:33 提问

C语言函数间用指针调用数值的问题

函数原型是这样的
void f(int * u);
main里有这么一句
f(&x);
相当于是把变量x的地址传递给f(),没错吧,那问题来了,被赋值的是 * u还是u?
答案自然是u
我是这样想的, * u 作为一个int整体是f()的形式参数,那就将地址以int储存,那u岂不是这个地址的地址?到底哪里理解错误了?

7个回答

bdmh
bdmh   Ds   Rxr 2015.06.04 14:03
已采纳
 int *u,u是指针,他需要指向一个地址,&x,就是x的地址,int *u = &x,这个就是把x的地址,赋值给u,让u指向x的地址
Moefish
Moefish   2015.06.04 13:38

也就是问说int * u;这个语句到底强调的是声明了一个int 变量 * u,还是说声明了一个指针 u?
我觉得应该是后者,对吗?

p2006pp8p26
p2006pp8p26 int*a=&b; //这里接收地址的是a而不是*a 刚开始看确实感觉很奇怪
2 年多之前 回复
VisualEleven
VisualEleven   Ds   Rxr 2015.06.04 13:46

u是指向int类型的指针

q3733353520
q3733353520   2015.06.04 13:56
int x =1;
f(&x) ;//这个表示将变量x的地址传给u,即  int *u = &x;u为一个指向int类型的指针
Knot_it
Knot_it   2015.06.04 14:15

可以这样想, u 才是f()的形式参数,u中存放的是一个地址,一个指向int变量类型的地址

yangjie1987636
yangjie1987636   2015.06.04 16:11

u是指针变量,就是存取地址的变量,你的函数定义中int *u的含义是u中存取的地址是指向一个int类型的数据。

u012377333
u012377333   Rxr 2015.06.05 17:42

u是int类型指针
x是int类型的变量
&x表示取x的地址
传参过程就是把x的地址给了u
u就是用来存储int类型的指针的

Csdn user default icon
上传中...
上传图片
插入图片