| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 533 人关注过本帖
标题:问一个c入门题。求以下程序的运行结果是?
只看楼主 加入收藏
Twinkle_cj
Rank: 1
等 级:新手上路
帖 子:64
专家分:0
注 册:2010-7-3
结帖率:93.33%
收藏
已结贴  问题点数:24 回复次数:5 
问一个c入门题。求以下程序的运行结果是?
求以下程序的运行结果是?
int aa[3][3]={{2},{4},{6}};
main()
{ int i,*p=&aa[0][0];
      for(i=0;i<2;i++)
           if(i==0) aa[i][i+1]=*p+1;
           else     ++p;
      printf("%d",*p);
}
结果是3
大侠能告诉我是为什么么  这是一道笔试题。

第二个问题
若想输出b数组的10个元素,下面存在错误的程序行是
1 main()
2{ int b[10]={1,3,5,7,9,2,4,6,8,10},k;
3  for(k=0;k<10;k++,b++)
4     printf("%4d",*b);
5}
答案是第三行
大侠能告诉我是为什么么??
万分感谢!!
搜索更多相关主题的帖子: 入门 结果 运行 
2010-10-26 21:33
outsider_scu
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:430
专家分:1333
注 册:2010-10-21
收藏
得分:12 
第一题,第一次循环,i=0时,p指向的是而为数组的a[0][0],所以*p=2;if(i==0) aa[i][i+1]=*p+1;相当于a[0][1]=2+1;
        第二次循环,i=1,p没有发生变坏,还是指向a[0][0],当执行else     ++p;p向后移动一个单位,相当于p指向a[0][1]。
        所以最后p=3;
第二题,b是数组的首地址,是一个指针常量,常量是不能进行自增运算的。所以 for(k=0;k<10;k++,b++)中的b++是错误的。




编程的道路上何其孤独!
2010-10-26 21:42
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
收藏
得分:12 
楼上正解

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2010-10-26 21:50
Twinkle_cj
Rank: 1
等 级:新手上路
帖 子:64
专家分:0
注 册:2010-7-3
收藏
得分:0 
回复 2楼 outsider_scu
非常感谢 我想问下 第二题 第四行 的*b 我觉得不对 b是数组名 那*b代表什么呢
第一题 int *p=&aa[0][0] 和 int *p=aa 等价么 谢谢
2010-10-26 22:13
outsider_scu
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:430
专家分:1333
注 册:2010-10-21
收藏
得分:0 
以下是引用Twinkle_cj在2010-10-26 22:13:03的发言:

非常感谢 我想问下 第二题 第四行 的*b 我觉得不对 b是数组名 那*b代表什么呢
第一题 int *p=&aa[0][0] 和 int *p=aa 等价么 谢谢
*是去内容运算。 可以理解b为指针常量。*b是读取b所在地址的内容。这道题中,*b=b[0]。
第一题 int *p=&aa[0][0] 和 int *p=aa 等价!数组名就是数组的首地址,就是,数组中第一个元素的地址。

编程的道路上何其孤独!
2010-10-26 22:19
Twinkle_cj
Rank: 1
等 级:新手上路
帖 子:64
专家分:0
注 册:2010-7-3
收藏
得分:0 
回复 5楼 outsider_scu
十分感谢!
2010-10-26 23:08
快速回复:问一个c入门题。求以下程序的运行结果是?
数据加载中...
 
   



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

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