| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 628 人关注过本帖
标题:指针可真抽象啊,哎,指向二维数组的指针,搞不懂
取消只看楼主 加入收藏
迷途的菜鸟
Rank: 2
等 级:论坛游民
帖 子:36
专家分:50
注 册:2012-3-20
结帖率:83.33%
收藏
 问题点数:0 回复次数:2 
指针可真抽象啊,哎,指向二维数组的指针,搞不懂
#include <stdio.h>

main()
{
    int i, j;
    int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
    int *p;
    p = a;
   
    for (i=0; i<3; i++)
        for (j=0; j<4; j++)
        {
            printf("%d", *(*(p+i)+j));
        }
}
我是想打印二维数组中各元素的值,代码在上面,帮帮本菜鸟
2012-06-19 20:52
迷途的菜鸟
Rank: 2
等 级:论坛游民
帖 子:36
专家分:50
注 册:2012-3-20
收藏
得分:0 
以下是引用雪狼MJ在2012-6-19 22:46:15的发言:

可以把二维数组当成一个一位数组看待,代码如下:
#include <stdio.h>

int main()
{
    int i, j;
    int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
    int *p;
    p = &a[0][0];
   
    for (i=0; i<12; i++){
        printf("%d ", *(p+i));  
    }
    putchar(10);
    return 0;
}
但这是搞欺骗,这样明显破坏了程序的可读性。
另一种方法就是把指针变量赋值为第i行的第0个的地址,代码如下:
#include <stdio.h>

int main()
{
    int i, j;
    int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
    int *p;  
    for (i=0; i<3;i++){
        p=a;
        for (j=0; j<4; j++)
        {
            printf("%d  ", *(p+j));
        }
    }
    return 0;   
        
}
希望能帮到你!~

谢谢你,我昨天找到了解决办法,但是你的解释我也受益了!
2012-06-20 21:31
迷途的菜鸟
Rank: 2
等 级:论坛游民
帖 子:36
专家分:50
注 册:2012-3-20
收藏
得分:0 
以下是引用demonleer在2012-6-19 23:25:36的发言:


#include <stdio.h>

main()
{
    int i, j;
    int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
    int (*p)[4];  //这里修改一下
    p = a;
   
    for (i=0; i<3; i++)
        for (j=0; j<4; j++)
        {
            printf("%d", *(*(p+i)+j));
        }
}

昨天我找到解决办法了,就是这样!我指针定义有问题
2012-06-20 21:32
快速回复:指针可真抽象啊,哎,指向二维数组的指针,搞不懂
数据加载中...
 
   



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

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025371 second(s), 10 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved