t**********y 发帖数: 374 | 1 #include
#include
int change (int x)
{
x += 5;
return x;
}
int main (){
int y =5;
change (y);
printf ("%d",y);
return 0;
}
------------------
第一次写C, 这个小程序, 我期望输出为10,但结果是5, 为什么? 多谢解释:) |
C***y 发帖数: 2546 | 2 你修改的并不是y
需要传y的地址过去
【在 t**********y 的大作中提到】 : #include : #include : int change (int x) : { : x += 5; : return x; : } : int main (){ : int y =5; : change (y);
|
p**o 发帖数: 3409 | 3
void change (int * x)
(* x) += 5;
//return x;
change (& y);
【在 t**********y 的大作中提到】 : #include : #include : int change (int x) : { : x += 5; : return x; : } : int main (){ : int y =5; : change (y);
|
b***i 发帖数: 3043 | 4 int change (int& x)
【在 t**********y 的大作中提到】 : #include : #include : int change (int x) : { : x += 5; : return x; : } : int main (){ : int y =5; : change (y);
|
g***l 发帖数: 2753 | 5 C 没有 reference。
【在 b***i 的大作中提到】 : int change (int& x)
|
l********a 发帖数: 1154 | 6 第一次写c,大家就给推荐指针,
你那函数也没问题,返回+5后的数值也对,就是调用的时候没有把返回值赋值给y
最简单就是把main函数里面的change (y);改成 y = change (y);就行了 |
t**********y 发帖数: 374 | 7 多谢指教.
看来指针是c 的必要部分, 得去好好看看; 有好的网络教程/书籍推荐吗?
【在 l********a 的大作中提到】 : 第一次写c,大家就给推荐指针, : 你那函数也没问题,返回+5后的数值也对,就是调用的时候没有把返回值赋值给y : 最简单就是把main函数里面的change (y);改成 y = change (y);就行了
|
a*w 发帖数: 4495 | 8 pass by value
printf("%d", change(y));
【在 t**********y 的大作中提到】 : #include : #include : int change (int x) : { : x += 5; : return x; : } : int main (){ : int y =5; : change (y);
|
s*****X 发帖数: 38 | 9 正解
【在 l********a 的大作中提到】 : 第一次写c,大家就给推荐指针, : 你那函数也没问题,返回+5后的数值也对,就是调用的时候没有把返回值赋值给y : 最简单就是把main函数里面的change (y);改成 y = change (y);就行了
|
l********a 发帖数: 1154 | 10
看你要c还是c++
我一般上这里看教程
http://www.cprogramming.com/tutorial/c-tutorial.html
上这里查函数
http://www.cplusplus.com/reference/
【在 t**********y 的大作中提到】 : 多谢指教. : 看来指针是c 的必要部分, 得去好好看看; 有好的网络教程/书籍推荐吗?
|
|
|
y****e 发帖数: 23939 | 11 这是正解,以LZ的水平,pass by reference 或pass by pointer 直接修改参数不妥。
【在 l********a 的大作中提到】 : 第一次写c,大家就给推荐指针, : 你那函数也没问题,返回+5后的数值也对,就是调用的时候没有把返回值赋值给y : 最简单就是把main函数里面的change (y);改成 y = change (y);就行了
|
t**********y 发帖数: 374 | 12 以大家的经验,什么时候开始学习pointer比较合适???
【在 y****e 的大作中提到】 : 这是正解,以LZ的水平,pass by reference 或pass by pointer 直接修改参数不妥。
|
b*****n 发帖数: 685 | 13 pointer没他们说的那么难,随便试俩例子就能搞定 |
R****a 发帖数: 199 | 14 y=change(y); //if your intention is to get a new "y"
//then print y
【在 t**********y 的大作中提到】 : #include : #include : int change (int x) : { : x += 5; : return x; : } : int main (){ : int y =5; : change (y);
|
O*******d 发帖数: 20343 | |