数组遍历问题?

完美教父 2017-12-13 06:16:30
#include <stdio.h>

int main(void)
{
char a[2][2][3] = {
{
{'1','2','3'},
{'4','5','6'}
},
{
{'7','8','9'},
{'10','11','12'}
}
};
char *pa = *a;
int i = 0;
for(i = 0; i < 12; ++i)
{
printf("%c ",*(pa + i));
}
printf("\n");
return 0;
}
遍历输出后:1 2 3 4 5 6 7 8 9 0 1 2
为什么后面10 11 12 出不来。哪里出错了么,请大神指点!谢谢!
...全文
168 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sky065530 2017-12-14
  • 打赏
  • 举报
回复
’10‘ ‘11’ ‘12’这三个不是字符,c语言会把它转换,所以你输出的是0,1,2 ,
sky065530 2017-12-14
  • 打赏
  • 举报
回复
声明两个指针,char (*pa1 )[2][3]; char (*pa2)[3];用这两个指针遍历,会方便很多,可以看一下《C专家编程》,里面有详细的讲解。
完美教父 2017-12-13
  • 打赏
  • 举报
回复
哦,原来是这样,谢谢回复。
引用 1 楼 cfjtaishan 的回复:
10, 11, 12是两个字符,即字符串了。不能用%c输出;稍微改一下就可以:
#include <stdio.h>

int main(void)
{
    char a[2][2][3] = {
        {
            {'1','2','3'},
            {'4','5','6'}
        },
        {
            {'7','8','9'},
            {'A','B','C'}
        }
    };
    char *pa = &a[0][0][0];
    int i = 0;
    for(i = 0; i < 12; ++i)
    {
        printf("%c ",*(pa + i));
    }
    printf("\n");
    return 0;
}
paschen 2017-12-13
  • 打赏
  • 举报
回复
%c输出的只是一个字符,如果你要输出"10",你要按字符串输出(不过要在结尾补充\0)
自信男孩 2017-12-13
  • 打赏
  • 举报
回复
10, 11, 12是两个字符,即字符串了。不能用%c输出;稍微改一下就可以:
#include <stdio.h>

int main(void)
{
    char a[2][2][3] = {
        {
            {'1','2','3'},
            {'4','5','6'}
        },
        {
            {'7','8','9'},
            {'A','B','C'}
        }
    };
    char *pa = &a[0][0][0];
    int i = 0;
    for(i = 0; i < 12; ++i)
    {
        printf("%c ",*(pa + i));
    }
    printf("\n");
    return 0;
}

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧