| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 492 人关注过本帖
标题:一个有关数组的小小问题,还请大家指教!
只看楼主 加入收藏
break0107
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-1-18
收藏
 问题点数:0 回复次数:8 
一个有关数组的小小问题,还请大家指教!
#include "stdio.h"
main()
{
int a[3][4]={{0,1,2,3}, {4,5,6,7}, {8,9,10,11}};
printf("%d\n",a);
printf("%d\n",*a);
printf("%d\n",a[0]);
printf("%d\n",&a[0]);
printf("%d\n",&a[0][0]);
}
在tc下运行后的结果为:
-82
-82
-82
-82
-82
这个-82应该表示的是数组的首地址的值,对于这5个-82,第1,3,5很容易理解,但是第2个和第4个就不好懂了,还请大家帮小弟分析分析,先谢过了!
搜索更多相关主题的帖子: 指教 
2007-01-18 16:11
mayudong1
Rank: 2
等 级:论坛游民
威 望:1
帖 子:348
专家分:21
注 册:2006-4-18
收藏
得分:0 
*a相当于a[0];
&a[0][0]是取a[0][0]的地址
他们都是表示数组的首地址
还有-82应该是产生溢出后的数.地址是没有负数的

2007-01-18 16:17
海蓝啸
Rank: 5Rank: 5
来 自:安徽
等 级:贵宾
威 望:17
帖 子:1611
专家分:0
注 册:2006-4-3
收藏
得分:0 
以下是引用break0107在2007-1-18 16:11:20的发言:
#include "stdio.h"
main()
{
int a[3][4]={{0,1,2,3}, {4,5,6,7}, {8,9,10,11}};
printf("%d\n",a); /*數組名為二維數組首地址*/
printf("%d\n",*a); /*二維數組行首地址*/
printf("%d\n",a[0]); /*和上面一樣*/
printf("%d\n",&a[0]); /*第一行的首地址*/
printf("%d\n",&a[0][0]); /*第一行第一個元素的地址*/
}
在tc下运行后的结果为:
-82
-82
-82
-82
-82
这个-82应该表示的是数组的首地址的值,对于这5个-82,第1,3,5很容易理解,但是第2个和第4个就不好懂了,还请大家帮小弟分析分析,先谢过了!


这个社会太复杂。。。
2007-01-18 16:31
break0107
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-1-18
收藏
得分:0 
我又进行修改了一下,这下又多了几个输出!这样对比似乎就比较容易看懂了,谢谢大家了,不过我也觉得为什么输出的结果会是负数,如果是溢出,那是为什么溢出呢?还请解释一下!

#include "stdio.h"
main()
{
int a[3][4]={{0,1,2,3}, {4,5,6,7}, {8,9,10,11}};
printf("%d\n",a);
printf("%d\n",a+1);
printf("%d\n",*a);
printf("%d\n",*a+1);
printf("%d\n",*(a+1));
printf("%d\n",a[0]+1);
printf("%d\n",&a[0]);
printf("%d\n",&a[0][0]);
}
运行结果:
-82
-74
-82
-80
-74
-80
-74
-80
-82
-82
2007-01-18 16:44
海蓝啸
Rank: 5Rank: 5
来 自:安徽
等 级:贵宾
威 望:17
帖 子:1611
专家分:0
注 册:2006-4-3
收藏
得分:0 
至於為什麼是負數。

你用%d輸出,也就是十進制。。。。你用八進制看看 把%d換成%o

这个社会太复杂。。。
2007-01-18 16:48
海蓝啸
Rank: 5Rank: 5
来 自:安徽
等 级:贵宾
威 望:17
帖 子:1611
专家分:0
注 册:2006-4-3
收藏
得分:0 

就知道了


这个社会太复杂。。。
2007-01-18 16:48
海蓝啸
Rank: 5Rank: 5
来 自:安徽
等 级:贵宾
威 望:17
帖 子:1611
专家分:0
注 册:2006-4-3
收藏
得分:0 
輸出結果如下

177656
177666
177656
177660
177666
177660
177656
177656


這些數用%d輸出肯定溢出。。。。
你用%ld輸出長整形 。。。就不溢出了

这个社会太复杂。。。
2007-01-18 16:50
海蓝啸
Rank: 5Rank: 5
来 自:安徽
等 级:贵宾
威 望:17
帖 子:1611
专家分:0
注 册:2006-4-3
收藏
得分:0 
%d上限 32767

这个社会太复杂。。。
2007-01-18 16:52
break0107
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-1-18
收藏
得分:0 
试了一下,果然,用8进制和16进制分别输出了一下发现结果分别是177656和FFAE,这么大的数用int型的十进制整数输出自然会溢出,懂了,谢谢!
2007-01-18 16:57
快速回复:一个有关数组的小小问题,还请大家指教!
数据加载中...
 
   



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

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