|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 问个问题
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
1161
人关注过本帖
标题:
问个问题
只看楼主
加入收藏
hy1107648
等 级:
论坛游民
帖 子:80
专家分:40
注 册:2010-2-8
结帖率:
37.5%
楼主
收藏
已结贴
√
问题点数:20 回复次数:10
问个问题
#include<stdio.h>
void main()
{
int a[3][3],*p,i;
p=&a[0][0];
for(i=0;i<9;i++) p[i]=i;
for(i=0;i<3;i++) printf("%d",a[1][i]);
}
该程序的结果为什么是345??
个人认为:p[i]代表行的首元素,其他的元素应该都是0吧。那为什么结果是345??
2010-08-31 23:40
举报帖子
使用道具
赠送鲜花
A13433758072
来 自:广东潮州
等 级:
小飞侠
威 望:
1
帖 子:1182
专家分:2784
注 册:2010-7-22
第
2
楼
收藏
得分:2
回复 楼主 hy1107648
你输出的好像是二行i列的元素地址。个人见解
一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入, QQ群38490319
2010-09-01 00:52
举报帖子
使用道具
赠送鲜花
S_12s
等 级:
黑侠
威 望:
1
帖 子:110
专家分:670
注 册:2010-7-21
第
3
楼
收藏
得分:2
p代表数组的首地址,而且二维数组中在内存中的地址是连续的,即a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2] a[2][0] a[2][1] a[2][2],这样,当执行for(i=0;i<9;i++) p[i]=i;时,就依次对上面的数赋值;
2010-09-01 08:35
举报帖子
使用道具
赠送鲜花
erikyo
等 级:
蜘蛛侠
威 望:
2
帖 子:270
专家分:1154
注 册:2010-6-10
第
4
楼
收藏
得分:2
#include <stdio.h>
void main()
{
int a[3][3],*p,i;
p=&a[0][0];
//指针p被赋值为&a[0][0]也就是数组a的数元素的首地址,这样就可以用p[i]它引用每个元素了
for(i=0;i<9;i++)
p[i]=i;
for(i=0;i<3;i++)
printf("%d",a[1][i]);
//输出的是第一行的所有元素
}
2010-09-01 08:55
举报帖子
使用道具
赠送鲜花
ggyy4k
等 级:
职业侠客
帖 子:111
专家分:334
注 册:2010-6-28
第
5
楼
收藏
得分:2
回复 4楼 erikyo
楼主使用的却是一级指针,不管你定义几维数组,结果都是一样的。
因为多维数组也是线性排列的,一级指针p[i]也是线性排列的。
2010-09-01 09:22
举报帖子
使用道具
赠送鲜花
makebest
等 级:
蝙蝠侠
威 望:
3
帖 子:658
专家分:962
注 册:2005-3-17
第
6
楼
收藏
得分:2
|
0 1 2
-----------
0|
0 1 2
1|
3 4 5
2|
6 7 8
2010-09-01 09:31
举报帖子
使用道具
赠送鲜花
xiepeilin
等 级:
新手上路
帖 子:22
专家分:5
注 册:2010-7-29
第
7
楼
收藏
得分:2
回复 楼主 hy1107648
二维数组
a[0][0] a[0][1] a[0][2]
a[1][0] a[1][1] a[1][2]
a[2][0] a[2][1] a[2][2]
p指向a[0][0]的地址,for(i=0;i<9;i++)p[i]=i;地址叠加,i=0时候。a[0][0]的首地址是0,接着a[0][1]的为1,
a[0][2]的为2,以此类推,a[1][0] a[1][1] a[1][2]的分别为3,4,5
a[2][0] a[2][1] a[2][2]分别为6,、7、8
而输出的是a[1][i]而i=0;i<3;i++即i=0时,a[1][0]
i=1时,a[1][1] i=2时,a[1][2]
输出的时候中间未有空格所以是345
以上是我的理解,如有不对的地方还请各位高手指点!
2010-09-01 09:42
举报帖子
使用道具
赠送鲜花
encounter
来 自:扬州
等 级:
职业侠客
威 望:
2
帖 子:150
专家分:359
注 册:2010-7-24
第
8
楼
收藏
得分:2
a[1][i]
是第二行呀。。。。
a[0][i]才是第一行
ping nbtstat netstat tracert nat at ftp telnet..................
2010-09-01 10:36
举报帖子
使用道具
赠送鲜花
尘埃落雪
等 级:
论坛游民
帖 子:34
专家分:17
注 册:2010-6-7
第
9
楼
收藏
得分:2
就是第二行吧,也没什么错
2010-09-01 11:58
举报帖子
使用道具
赠送鲜花
star5578
等 级:
论坛游民
帖 子:39
专家分:11
注 册:2010-7-31
第
10
楼
收藏
得分:2
楼上的都说了
2010-09-01 12:11
举报帖子
使用道具
赠送鲜花
11
1/2页
1
2
快速回复:
问个问题
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.018005 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved