标题:关于二维数组的基本问题,请教各位大神!
只看楼主
胡胡熊
Rank: 1
等 级:新手上路
帖 子:23
专家分:5
注 册:2014-3-13
结帖率:77.78%
已结贴  问题点数:5 回复次数:13 
关于二维数组的基本问题,请教各位大神!
我想用下面的程序分别用数组和指针的方法输出二维数组的一个元素但发现值并不一样
请教各位大神为什么出现这种情况,非常感谢!
Thank you in advance,

#include <stdio.h>

main()
{
    int array[4][13] = {0};

    printf("array[0][0] is %d\n",array[0][0]);
   
    printf("*array is %d\n",*array);
}
输出结果:array[0][0] is 0
          *array = 1244792




搜索更多相关主题的帖子: include Thank 
2014-04-09 09:33
Andrew_Lee
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:185
专家分:626
注 册:2014-3-21
得分:0 
*array表示的是array[0]的地址(%d十进制表示),应该用**array才表示array[0][0]
2014-04-09 09:50
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
得分:0 
*array 代表array[0][0]的地址。你试试:*array = array[0]=&array[0][0]
array[0][0]= **array
2014-04-09 09:52
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
得分:0 
不好意思重复了。
2014-04-09 09:53
胡胡熊
Rank: 1
等 级:新手上路
帖 子:23
专家分:5
注 册:2014-3-13
得分:0 
回复 3楼 ying8501
非常感谢大神!
确实是这样,我有点不明白的是:数组名就已经是一个确定的地址了,*array应该对应一个确定的内存单元读出里面的数啊。为什么*array变成了一个新的数组?
请大神指点!
2014-04-09 10:04
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
程序代码:
#include <stdio.h>

int main()
{
    int arr[4][5] = {0};
    int i,j;
    //赋初始值
    for(i=0;i<4;i++)
    {
        for(j=0;j<5;j++)
        {
            arr[i][j]=i*j+5;
        }
    }
    //第一种输出方式
    for(i=0;i<4;i++)
    {
        for(j=0;j<5;j++)
        {
            printf("%4d",arr[i][j]);
        }
        printf("\n");
    }
    //第二种输出方式
    printf("\n");
    int* p=arr[0];
    for(i=0;i<4;i++)
    {
        for(j=0;j<5;j++)
        {
            printf("%4d",*(p+j));
        }
        p+=5;
        printf("\n");
    }
    //第三种输出方式
    printf("\n");
    p=arr[0];
    for(i=0;i<20;i++)
    {
        if(i%5==0) printf("\n");
        printf("%4d",*(p+i));
    }
    printf("\n");
    return 0;
}

还有一些输出方式  就不一一列举了

DO IT YOURSELF !
2014-04-09 10:26
安宁1991
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:76
专家分:123
注 册:2014-4-3
得分:0 
楼上都是大神,膜拜。我也有个问题,没有用指针,我用a[x][y]的方式输出的是数组内对应的某个值,这没错,可是要怎么输出那个值对应的列地址的值呢
不是要输出列地址,而是列地址对应的值。求教!

因为有你,所以做什么都有动力。z,爱你。
2014-04-09 17:13
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
以下是引用安宁1991在2014-4-9 17:13:33的发言:

楼上都是大神,膜拜。我也有个问题,没有用指针,我用a[x][y]的方式输出的是数组内对应的某个值,这没错,可是要怎么输出那个值对应的列地址的值呢?
不是要输出列地址,而是列地址对应的值。求教!

你真以爲C有多維數組的啊?都不看書的?

授人以渔,不授人以鱼。
2014-04-09 17:14
安宁1991
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:76
专家分:123
注 册:2014-4-3
得分:0 
回复 8楼 TonyDeng
看了,不懂啊。。可以看成是多个一维数组,这我能理解。。可是要取某个列地址对应的数,也就是值,这个不会啊?

因为有你,所以做什么都有动力。z,爱你。
2014-04-09 17:20
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
C祗有數組的數組,永遠是一維的,有行概念,沒有列概念,何來的列地址。

授人以渔,不授人以鱼。
2014-04-09 17:35



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-429856-1-1.html




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

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