| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1088 人关注过本帖, 1 人收藏
标题:菜鸟级别的问题不会占用前辈们太多的时间,你随手一点,我受益非浅!
只看楼主 加入收藏
语文不及格
Rank: 1
等 级:新手上路
帖 子:30
专家分:2
注 册:2008-3-20
结帖率:100%
收藏(1)
 问题点数:0 回复次数:8 
菜鸟级别的问题不会占用前辈们太多的时间,你随手一点,我受益非浅!
(9)下列以下程序执行后的输出结果是 。

#include <stdio.h>
#include <math.h>
void func(int *a, int b[ ])
  {
   b[0]=*a+6;
  }
void main()
 {
  int a, b[5];
  a=0; b[0]=3;
  func(&a, b);
  printf("%d \n", b[0]);
 }
(A) 6   (B) 7   (C) 8   (D) 9    (E)3

问题 1:实际运行得的结果是6,不过我思考的结果是3。
      麻烦解释一下相关知识概念,原因结果。
        
        我是这样想的!C语言都是传值调用的,不能改变实参.
             虽然在func()里b[0]=6,可打印的应该是main里附的值的b[0]=3。
      6楼的哥们点醒了我一点,这么说b[0]效果相当于指针一样指向的是地址?
            我一直以为数组b[0]=3装入原素后的效果,相当于一个普通变量 f=3 一样!
      
      
            

   请原谅我不是没有好好看书,我知道书上一定有讲解,但是
  都是零零碎碎的东点西点,指针的只说指针,数组的只说数组,没有结合起来系统的讲解,
     我看得好像明白又好像不明白,搞得我一头雾水! 

[[it] 本帖最后由 语文不及格 于 2008-9-25 00:14 编辑 [/it]]
搜索更多相关主题的帖子: 前辈 级别 受益 时间 
2008-09-24 23:39
cjjc
Rank: 2
等 级:新手上路
威 望:3
帖 子:44
专家分:0
注 册:2008-9-20
收藏
得分:0 
说出 3 的理由 ?
2008-09-24 23:41
语文不及格
Rank: 1
等 级:新手上路
帖 子:30
专家分:2
注 册:2008-3-20
收藏
得分:0 
cjjc 还在吗,我已经改过帖子加上我的思考方法了!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2008-09-24 23:47
鸭飞猪
Rank: 1
来 自:浙江工业大学
等 级:新手上路
帖 子:16
专家分:0
注 册:2008-9-14
收藏
得分:0 
地址操作 改变的。
以后你还会接触到引用。。。
2008-09-24 23:59
cjjc
Rank: 2
等 级:新手上路
威 望:3
帖 子:44
专家分:0
注 册:2008-9-20
收藏
得分:0 
void func(int *a, int b[ ])

这个不是传值呀。


PS: 上错彩色部分说错。
应该说是 传的内容是地址。
值传递, 传的是地址。
地址传递, 传的是地址。

[[it] 本帖最后由 cjjc 于 2008-9-25 00:14 编辑 [/it]]
2008-09-24 23:59
鸭飞猪
Rank: 1
来 自:浙江工业大学
等 级:新手上路
帖 子:16
专家分:0
注 册:2008-9-14
收藏
得分:0 
是传值的,但是是地址。。。地址没变的话,还是会指向那个值的。。
2008-09-25 00:02
葬烟
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2008-9-3
收藏
得分:0 
func(&a, b)这个函数带的参数都是地址,a的地址和数组b的首地址。然后的void func()虽然没有返回参数,但是其内部操作是修改参数指针所指向的值。当然最终会改变b[0]的值。
2008-09-25 00:21
语文不及格
Rank: 1
等 级:新手上路
帖 子:30
专家分:2
注 册:2008-3-20
收藏
得分:0 
7楼!!!!!!!!1
谢谢你,完全懂了!!!!!!!!!!!
2008-09-25 00:26
J_j
Rank: 1
等 级:新手上路
威 望:1
帖 子:100
专家分:0
注 册:2008-8-21
收藏
得分:0 
func(&a, b);
b[5]是定义的一个整型数组,在内存中系统会开辟一段连续的空间给b[5],那么[bo]b[/bo]就是可以表示这个数组的首地址!就是说,调用函数是传地址!得到的值当然就是9 咯!
2008-09-25 00:27
快速回复:菜鸟级别的问题不会占用前辈们太多的时间,你随手一点,我受益非浅!
数据加载中...
 
   



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

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