黑马程序员技术交流社区

标题: 求解 [打印本页]

作者: 郑亚鸽    时间: 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