A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郑亚鸽 中级黑马   /  2014-4-24 20:53  /  967 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 郑亚鸽 于 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

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

3 个回复

正序浏览
没记错的话这应该是地址值传递,10通过*n所指向的内存地址给int a重新赋值了,所以打印出来的就是a=10。
回复 使用道具 举报
你change(int *n)是把 a的地址传进去了,地址都拿到了值肯定被改了,你要想值传递,改成change(int n)就是90了
回复 使用道具 举报
指针是可以改变外部变量的值
这样写就是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;
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马