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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨贺阳 中级黑马   /  2014-11-28 13:12  /  1070 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int a = 3;   int b = 4;   int c = 0;   
int x[4] = {a,b};
c=a;
a=b;
b=c;
printf("出现%d%d%d%d\n",a,b,x[0],x[1]);

问题来了,为什么a和b的值已经互换了,x[0]的值还是a原来的3!!??
大神!!速来解答!!!最好能帮我分析下内存。

10 个回复

倒序浏览
本帖最后由 onefiter 于 2014-11-28 13:25 编辑

看一下李明杰老师的快速入门20.指针与一维数组这一视频

点评

能不能解答下。。。。视频那么多,大哥  发表于 2014-11-28 13:16
回复 使用道具 举报
程序运行,从上到下,你只是换a ,b的值,并没有对一维数组操作

点评

x[0]是谁?不是a的值吗?a的值已经变了,x[0]所指向的值为何不变?  发表于 2014-11-28 13:23
回复 使用道具 举报
程序第二行对数组进行定义和初始化,此时x[0]=3;x[1]=4;x[2]=0;x[3]=0;之后的程序并没有对数组操作啊

点评

我也是刚学  发表于 2014-11-28 13:34
哦~我好像懂了,原来数组初始化了跟a,b就没关系了,谢谢啦大神~  发表于 2014-11-28 13:32
回复 使用道具 举报
数组值没发生变化,只是改变了整形
回复 使用道具 举报
数组和变量A,B分别占用不同的内存区域,所以,不能全改
回复 使用道具 举报
松果 中级黑马 2014-11-28 21:10:11
7#
交换的知识a跟b的值,x[0]和x[1]的值只是在定义的时候赋了值,之后就没修改过
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马