鱼C论坛

 找回密码
 立即注册
查看: 3444|回复: 5

指向指针的指针不会啊

[复制链接]
发表于 2018-2-27 21:35:30 | 显示全部楼层 |阅读模式

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

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

x
 #include <stdio.h>

int main()
{
        char *cBooks[] = {
                "《C程序设计语言》",
                "《C专家编程》",
                "《C和指针》",
                "《C陷阱与缺陷》",
                "《C Primer Plus》",
                "《带你学C带你飞》"};
        char **byFishC;
        char **jiayuLoves[4];
        int i;

        byFishC = &cBooks[5];
        jiayuLoves[0] = &cBooks[0];
        jiayuLoves[1] = &cBooks[1];
        jiayuLoves[2] = &cBooks[2];
        jiayuLoves[3] = &cBooks[3];

        printf("FishC出版的图书有:%s\n", *byFishC);
        printf("小甲鱼喜欢的图书有:\n");

        for (i = 0; i < 4; i++)
        {
                printf("%s\n", *jiayuLoves[i]);
        }

        return 0;
}


请问 char **byFishC;
        char **jiayuLoves[4];
        int i;
        byFishC = &cBooks[5];
        jiayuLoves[0] = &cBooks[0];
        jiayuLoves[1] = &cBooks[1];
        jiayuLoves[2] = &cBooks[2];
        jiayuLoves[3] = &cBooks[3];
这一段什么意思啊?有点蒙
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-2-27 23:28:57 | 显示全部楼层
char *cBooks[]    //一个指针数组。

char **byFishC    //一个指针的指针变量,你可以理解为一个二组数组指针。
        
char **jiayuLoves[4]    //一个存放四个指针的指针元素的数组。
      
byFishC = &cBooks[5]    //把"《带你学C带你飞》"的地址赋给它
        
jiayuLoves[0] = &cBooks[0]   //同上
        
jiayuLoves[1] = &cBooks[1];  //同上
      
jiayuLoves[2] = &cBooks[2];    //同上
      
jiayuLoves[3] = &cBooks[3];    //同上
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-28 01:10:17 | 显示全部楼层
char *cBooks[]
// *cBooks[]名指针数组,本质是数组,数组中存放的是指针
char **byFishC
// **byFishC名双重指针,本质是指针,指针指向的还是一个指针
char **jiayuLoves[4]
// **jiayuLoves[4]名双重指针数组,本质是数组,数组中存放的是双重指针
捕获.PNG
byFishC = &cBooks[5]
//取cBooks[5]的地址,并赋值给byFishC。换句话说byFishC这个变量中的内容是cBooks[5]的地址
捕获1.PNG
jiayuLoves[0] = &cBooks[0]
//取cBooks[0]的地址,并赋值给jiayuLoves[0]。换句话说jiayuLoves[0]这个数组中的内容是cBooks[0]的地址
捕获2.PNG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-28 08:59:33 | 显示全部楼层
指向指针的指针就是一个二维数组罢了,说的那么绕口,用二维数组的概念去理解一下代码就都明朗了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-28 10:04:30 | 显示全部楼层
你买了本自己喜欢的书 (你可以把这本书就当做一个内存地址)
你是这本书的所有人~(你可以看做 你自己就是指向这个内存地址的指针~)
这时候你朋友也喜欢这本书,想找你借阅,那肯定是通过你问你同不同意借阅~而不是直接去拿那本书~  (你可以把这个朋友当做指向指针的指针)
这时候你们看的是不是同一本书~(同一个内存地址~)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-2-28 10:07:43 | 显示全部楼层
char **byFishC; //双重指针,指向一个指针的指针
char **jiayuLoves[4];  //双重指针数组,其中每一个元素都是一个双重指针
int i;                       
byFishC = &cBooks[5];         //将指针数组第5个元素的地址赋给byFishC
jiayuLoves[0] = &cBooks[0]; //将指针数组第1个元素的地址赋给jiayuLoves[0]
jiayuLoves[1] = &cBooks[1];
jiayuLoves[2] = &cBooks[2];
jiayuLoves[3] = &cBooks[3];

//指针数组cBooks[]保存的是每一个字符串的首地址
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-29 09:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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