鱼C论坛

 找回密码
 立即注册
查看: 1630|回复: 4

[已解决]帮我看看这道数组指针题

[复制链接]
发表于 2017-8-19 18:24:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>

int main()
{
        char *array[5] = {"FishC", "Five", "Star", "Good", "WoW"};
        char *(*p)[5] = &array;
        int i, j;

        for (i = 0; i < 5; i++)
        {
                for (j = 0; (*p)[i][j] != '\0'; j++)
                {
                        printf("%c ", (*p)[i][j]);
                }
                printf("\n");
        }

        return 0;
}
这道题看了好久,实在不懂上面一个指针数组里的字母是怎样输出出来的。
求解:
1,*array[5]内的是不是五个指针顺序存储;
2,*(*p)[5]是什么,这种在数组指针的前面加*取值符是怎样的套用形式;
3,*array[5]内的五个字符串是怎样存储到*(*p)[5]中的;
4,它们为什么可以以*(p)[i][j]的形式输出。
最佳答案
2017-8-19 19:12:15
1,数组都是线性存储的,所以是顺序存储
2,(*p)[5] 是一个数组指针,指向的是一个数组(普通数组);前面加*说明又是一个指针,指向数组指针的指针;这样就可以用它来指向指针数组。
  如:
   (*p)[5] 用来指向 array[5] = {"FishC", "Five", "Star", "Good", "WoW"}
  *(*p)[5] 用来指向 *array[5] = {"FishC", "Five", "Star", "Good", "WoW"}

3,*array[5]内的五个字符串 不是 存储到*(*p)[5]中的
    2已经说得很明白了,是用*(*p)[5] 指向了*array[5]

4,因为数组和指针,指针和数组有着密不可分的关系,在很多情况下可以互用;同样也可以用指针的形式索引数组中的数据。总的来讲就是C的语法允许这样操作
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-8-19 18:27:25 | 显示全部楼层
我的[i]怎么被吃掉了。
ps:问题4,中应该是(*p)[i][j]   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-19 19:12:15 | 显示全部楼层    本楼为最佳答案   
1,数组都是线性存储的,所以是顺序存储
2,(*p)[5] 是一个数组指针,指向的是一个数组(普通数组);前面加*说明又是一个指针,指向数组指针的指针;这样就可以用它来指向指针数组。
  如:
   (*p)[5] 用来指向 array[5] = {"FishC", "Five", "Star", "Good", "WoW"}
  *(*p)[5] 用来指向 *array[5] = {"FishC", "Five", "Star", "Good", "WoW"}

3,*array[5]内的五个字符串 不是 存储到*(*p)[5]中的
    2已经说得很明白了,是用*(*p)[5] 指向了*array[5]

4,因为数组和指针,指针和数组有着密不可分的关系,在很多情况下可以互用;同样也可以用指针的形式索引数组中的数据。总的来讲就是C的语法允许这样操作

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
正在卓尼小乱 + 5 + 5 + 3 前三题都回答的很好:-D

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2017-8-19 22:23:30 | 显示全部楼层
恩,看了你的回答我总结了下,还有几个小问题:
1,*(*p)[5]是不是以5个字符指针指向了*array[5]中的5个指针的首地址;
2,指针初始化完之后  p  是什么;
 for (j = 0; (*p)[i][j] != '\0'; j++)
3,上题这一部分代码中是怎样利用(*p)[i][j]打印字符的。

数组指针,指针数组这些概念太容易让人混淆了。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-19 22:24:07 | 显示全部楼层
[i]又丢了,这是bug吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-30 17:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表