黑马程序员技术交流社区
标题:
求解
[打印本页]
作者:
郑亚鸽
时间:
2014-4-24 20:53
标题:
求解
本帖最后由 郑亚鸽 于 2014-4-25 01:06 编辑
#include
void change(int *n);
int main()
{
int a = 90;
change(&a);
printf("%d\n", a);
return 0;
}
void change(int *n)
{
*n = 10;
}
上述程序的结果为什是a=10,而不是a=90
作者:
blz01003hm
时间:
2014-4-24 21:12
指针是可以改变外部变量的值
这样写就是90
#include<stdio.h>
void change(int n);
int main()
{
int a = 90;
change(a);
printf("%d\n", a);
return 0;
}
void change(int n)
{
n = 10;
}
作者:
dawn.dai
时间:
2014-4-24 21:13
你change(int *n)是把 a的地址传进去了,地址都拿到了值肯定被改了,你要想值传递,改成change(int n)就是90了
作者:
悟中生有
时间:
2014-4-24 21:19
没记错的话这应该是地址值传递,10通过*n所指向的内存地址给int a重新赋值了,所以打印出来的就是a=10。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2