| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1392 人关注过本帖
标题:c语言求解
只看楼主 加入收藏
goubidan0812
Rank: 2
等 级:论坛游民
帖 子:12
专家分:17
注 册:2017-12-8
结帖率:100%
收藏
已结贴  问题点数:4 回复次数:7 
c语言求解
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: c语言 
2018-03-13 11:27
goubidan0812
Rank: 2
等 级:论坛游民
帖 子:12
专家分:17
注 册:2017-12-8
收藏
得分:0 
程序运行的结果是什么:?
2018-03-13 11:28
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:2 
运行了没有?
2018-03-13 11:38
goubidan0812
Rank: 2
等 级:论坛游民
帖 子:12
专家分:17
注 册:2017-12-8
收藏
得分:0 
回复 3楼 吹水佬
为什么结果是6,2,3,4,5
2018-03-13 12:18
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
以下是引用goubidan0812在2018-3-13 12:18:11的发言:

为什么结果是6,2,3,4,5


f(a);
改为:
f(&a[0]);   //这样容易理解,调用f()将a[0]元素自加5次

2018-03-13 13:53
hailong2012
Rank: 2
等 级:论坛游民
威 望:1
帖 子:15
专家分:43
注 册:2018-3-12
收藏
得分:2 
因为函数void f(int *q)的参数是指针,它将一个变量的地址传递到函数中。当main()函数中调用函数f(a)时,传递的是数组a的首元素a[0]的地址,即&a[0] 数组a的初始元素a[0] = 1,在调用函数f(a)时, (*a)++就相当于a[0]++,for循环5次后,a[0]的值由1增加为6(每循环一次,a[0]值加1)。
2018-03-13 13:57
lanke711
Rank: 9Rank: 9Rank: 9
来 自:流浪在天国之路
等 级:蜘蛛侠
威 望:7
帖 子:317
专家分:1437
注 册:2015-7-16
收藏
得分:2 
回复 楼主 goubidan0812
(*q)++;  觉得混乱?你以为是地址在向后移动?
形参q获得数组首地址,(*q)取值。

这样写会明白点:
int temp;//设一个中间变量

m=(*q);//中间变量获得q的值,即m得到q[0]的值。

for(i=0;i<5;i++)
{
    m++;    //递增,循环出来后,m=6
}

(*q)=m;//把m的值给(*q),即q[0]











普通人之所以普通,是因为他们普遍有一个通病,那就是认为自己永远普通。
千夫所指,我亦坚持。就算被所有人误解,我也照样守护这一切。
我们总是觉得,这些灵魂的表情,傲慢自大,目中无人,其实,真正目中无人的是我们。它们傲慢的不过是表情,而我们傲慢的却是行为!
记得,是为了忘记!
只要想着有那么一天,我就能忍受现在的每一天!
灾难并不可怕,可怕的是心中没有了希望。
你以为我在天堂,其实我正在路上。
当你觉得自己走不到终点的时候,请不要放弃。或许你的对手也是这种感觉。
2018-03-13 14:05
yuandefeng
Rank: 4
等 级:业余侠客
威 望:3
帖 子:51
专家分:216
注 册:2017-11-28
收藏
得分:0 
*q 指向的就是数组a首地址上元素的值,也就是1  (*q) ++ 始终是首地址的值在变,指针并没有移动。如果是*q++就不一样了。
2018-03-16 21:55
快速回复:c语言求解
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021523 second(s), 12 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved