| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦   
共有 315 人关注过本帖
标题:菜鸟级别的问题不会占用前辈们太多的时间,你随手一点,我受益非浅!
收藏  订阅  推荐  打印

菜鸟级别的问题不会占用前辈们太多的时间,你随手一点,我受益非浅!

(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 一样!
      
      
            

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

[ 本帖最后由 语文不及格 于 2008-9-25 00:14 编辑 ]

TOP

说出 3 的理由 ?

TOP

cjjc 还在吗,我已经改过帖子加上我的思考方法了!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

TOP

地址操作 改变的。
以后你还会接触到引用。。。

TOP

void func(int *a, int b[ ])

这个不是传值呀。


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

[ 本帖最后由 cjjc 于 2008-9-25 00:14 编辑 ]

TOP

是传值的,但是是地址。。。地址没变的话,还是会指向那个值的。。

TOP

func(&a, b)这个函数带的参数都是地址,a的地址和数组b的首地址。然后的void func()虽然没有返回参数,但是其内部操作是修改参数指针所指向的值。当然最终会改变b[0]的值。

TOP

7楼!!!!!!!!1

谢谢你,完全懂了!!!!!!!!!!!

TOP

func(&a, b);
b[5]是定义的一个整型数组,在内存中系统会开辟一段连续的空间给b[5],那么b就是可以表示这个数组的首地址!就是说,调用函数是传地址!得到的值当然就是9 咯!

TOP

共有 314 人关注过本帖
发新话题
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.053415 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved