鱼C论坛

 找回密码
 立即注册
查看: 2393|回复: 14

谁能给讲解讲解?

[复制链接]
发表于 2012-12-17 20:16:46 | 显示全部楼层 |阅读模式
1鱼币
# include <stdio.h>
void sum(int a[])
{
a[0]=a[-1]+a[1];
}
main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
sum(&a[2]);
printf("%d\n",a[2]);
}

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-12-17 21:24:14 | 显示全部楼层
愚兄认为是2+4,结果是6.a[2] 等于3,你传了它的地址进函数,前后两个数相加,结果赋给它。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-12-17 21:54:04 | 显示全部楼层
主函数里面调用了sum函数,把a[2]的地址传进去,而sum函数里面定义了一个a[],我想你知道数组名就是指针,所以不难理解,&a[2]就是一个指向a[2]这个元素的指针,sum函数里面进行的操作实际上就是对主函数里面的数组进行的操作,其中a[-1]就是a[2]的前一个元素,也就是2,而a[1]就是a[2]的下一个元素,也就是4,最终得到的结果就是a[2]=6,你应该知道用指针在外函数里面操作数据的话元素的值在主函数里面会随之改变的,所以最终输出的就是6.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-12-17 21:57:29 | 显示全部楼层

O(∩_∩)O谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-12-17 22:08:39 | 显示全部楼层
结果是6,在vc++6.0中验证通过;
# include <stdio.h>
void sum(int a[])
{
a[0]=a[-1]+a[1];
}
main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
sum(&a[2]);     //把a[2]的地址传递给  sum函数中的a[0];  在子函数中a[0] = 6;a[-1] = 2;a[-2] = 1;
printf("%d\n",a[2]);        
}
地址中放的数值是一定的,只是用不同的数组元素指向了同样的地址;你可以多球几项,看其结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-12-17 22:26:33 | 显示全部楼层
木事,互相学习嘛!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-12-17 23:08:02 | 显示全部楼层
a[0]  谁能解释一下这里为什么要定义a[0]   我定义一个int 变量 得出的结果是不同的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-12-18 16:19:56 | 显示全部楼层
暗恋你很久了。 发表于 2012-12-17 23:08
a[0]  谁能解释一下这里为什么要定义a[0]   我定义一个int 变量 得出的结果是不同的

没能明白你的意思。你是在函数里定义其他int 变量吗?
函数里面的参数的值的改变不能引起主函数的改变。
除非是传数组的地址,或者传引用调用。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-12-18 16:34:49 | 显示全部楼层
压寨宝宝 发表于 2012-12-18 16:19
没能明白你的意思。你是在函数里定义其他int 变量吗?
函数里面的参数的值的改变不能引起主函数的改变。 ...

{
a[1]=a[-1]+a[1];
}
我改的这里 输出的结果就改变了,能否帮忙解释一下?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-12-18 16:37:14 | 显示全部楼层
数组名不是指针,数组名是一个值,一个固定的地址
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-12-19 12:08:38 | 显示全部楼层
暗恋你很久了。 发表于 2012-12-18 16:34
{
a[1]=a[-1]+a[1];
}

这个时候主函数数组里面a[3]的值要改变,
即函数里面。a[1]=2+4=6,主函数数组里面的a[3]=6,但是a[2]的值不变的,依旧是3.所以输出应该是3.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-12-23 15:56:19 | 显示全部楼层
:o:o:o  
那个子函数中a[0]的值为6,为什么a[0]没有定义啊?
又为什么会把值返回给主函数中的a[2]?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-2-8 10:20:24 | 显示全部楼层
这个是简单的传递地址然后对数组元素进行操作
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-30 12:07:14 | 显示全部楼层
{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-30 12:08:09 | 显示全部楼层
{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-15 07:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表