鱼C论坛

 找回密码
 立即注册
查看: 1036|回复: 6

[已解决]指针

[复制链接]
发表于 2022-2-11 23:44:34 | 显示全部楼层 |阅读模式

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

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

x
int main()
{
        char *cBooks[]={
         "(C程序设计语言)"
         "(C专家编辑)"
         "(C和指针)"
         "(C陷阱与缺陷)"
         "(C Primer Plus)"
         "(带你学C带你飞)"};
         char **byFishC;//存放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;
  }
    printf("FishC出版的图书有:%s\n",&byFishC); 为什么在Dev C++打印不出来?
最佳答案
2022-2-12 18:02:01
小城!! 发表于 2022-2-12 15:53
好的,谢谢了,是我太粗心了,跟着打都能打错

如果答案对您有帮助的话,顺手设置最佳呗,谢谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-2-12 00:27:23 | 显示全部楼层
#include <stdio.h>

int main() {
    char *cBooks[] = {"(C程序设计语言)",
                      "(C专家编辑)",    // 编辑?我怎么没听过这本书?
                                        // 学编程要认真,不认真怎么学编程?
                      "(C和指针)",
                      "(C陷阱与缺陷)",
                      "(C Primer Plus)",
                      "(带你学C带你飞)"};
    char **byFishC; //存放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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-12 00:40:04 | 显示全部楼层
本帖最后由 isdkz 于 2022-2-12 00:43 编辑

printf("FishC出版的图书有:%s\n",&byFishC); 中的&是取地址符,你把一个地址当作字符串输出当然不是你想要的效果了,要把&改成*
这时候你会发现输出了(null)也就是说这个byFishC这个指向了null,而byFishC你赋值成了&cBooks[5];

回去检查cBooks,可以发现你的数组漏了逗号,所以其实你的数组只初始化了一个元素,所以导致其它的元素默认是(null)


#include <stdio.h>

int main()
{
        char *cBooks[]={
         "(C程序设计语言)",                                              // 加上逗号
         "(C专家编辑)",                                             // 加上逗号
         "(C和指针)",                                             // 加上逗号
         "(C陷阱与缺陷)",                                             // 加上逗号
         "(C Primer Plus)",                                             // 加上逗号
         "(带你学C带你飞)"};
         char **byFishC;//存放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;
  }
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-2-12 08:05:29 | 显示全部楼层
来学习

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

使用道具 举报

发表于 2022-2-12 14:59:34 | 显示全部楼层
看看大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-12 15:53:54 | 显示全部楼层
isdkz 发表于 2022-2-12 00:40
printf("FishC出版的图书有:%s\n",&byFishC); 中的&是取地址符,你把一个地址当作字符串输出当然不是你想 ...

好的,谢谢了,是我太粗心了,跟着打都能打错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-12 18:02:01 | 显示全部楼层    本楼为最佳答案   
小城!! 发表于 2022-2-12 15:53
好的,谢谢了,是我太粗心了,跟着打都能打错

如果答案对您有帮助的话,顺手设置最佳呗,谢谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-11 19:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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