| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1161 人关注过本帖
标题:问个问题
只看楼主 加入收藏
hy1107648
Rank: 2
等 级:论坛游民
帖 子: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
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:2 
回复 楼主 hy1107648
你输出的好像是二行i列的元素地址。个人见解

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2010-09-01 00:52
S_12s
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:110
专家分:670
注 册:2010-7-21
收藏
得分: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
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:270
专家分:1154
注 册:2010-6-10
收藏
得分: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
Rank: 5Rank: 5
等 级:职业侠客
帖 子:111
专家分:334
注 册:2010-6-28
收藏
得分:2 
回复 4楼 erikyo
楼主使用的却是一级指针,不管你定义几维数组,结果都是一样的。
因为多维数组也是线性排列的,一级指针p[i]也是线性排列的。
2010-09-01 09:22
makebest
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:658
专家分:962
注 册:2005-3-17
收藏
得分:2 
|  0 1 2
-----------
0|  0 1 2
1|  3 4 5
2|  6 7 8
2010-09-01 09:31
xiepeilin
Rank: 1
等 级:新手上路
帖 子:22
专家分:5
注 册:2010-7-29
收藏
得分: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
Rank: 5Rank: 5
来 自:扬州
等 级:职业侠客
威 望:2
帖 子:150
专家分:359
注 册:2010-7-24
收藏
得分:2 
a[1][i]
是第二行呀。。。。
a[0][i]才是第一行



ping   nbtstat   netstat   tracert    nat   at    ftp   telnet..................
2010-09-01 10:36
尘埃落雪
Rank: 2
等 级:论坛游民
帖 子:34
专家分:17
注 册:2010-6-7
收藏
得分:2 
就是第二行吧,也没什么错
2010-09-01 11:58
star5578
Rank: 2
等 级:论坛游民
帖 子:39
专家分:11
注 册:2010-7-31
收藏
得分:2 
楼上的都说了
2010-09-01 12:11
快速回复:问个问题
数据加载中...
 
   



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

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