小城!! 发表于 2022-2-11 23:44:34

指针

int main()
{
        char *cBooks[]={
       "(C程序设计语言)"
       "(C专家编辑)"
       "(C和指针)"
       "(C陷阱与缺陷)"
       "(C Primer Plus)"
       "(带你学C带你飞)"};
       char **byFishC;//存放byFishC的地址
       char **jiayuLoves;
       int i;
       byFishC = &cBooks;
       jiayuLoves=&cBooks;
       jiayuLoves=&cBooks;
       jiayuLoves=&cBooks;
       jiayuLoves=&cBooks;
    printf("FishC出版的图书有:%s\n",&byFishC);
    printf("小甲鱼喜欢的图书:\n");
   for(i=0;i<4;i++){
           printf("%s\n",*jiayuLoves);
       }
return 0;
}
    printf("FishC出版的图书有:%s\n",&byFishC); 为什么在Dev C++打印不出来?

人造人 发表于 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;
    int i;
    byFishC = &cBooks;
    jiayuLoves = &cBooks;
    jiayuLoves = &cBooks;
    jiayuLoves = &cBooks;
    jiayuLoves = &cBooks;
    printf("FishC出版的图书有:%s\n", *byFishC);
    printf("小甲鱼喜欢的图书:\n");
    for(i = 0; i < 4; i++) {
      printf("%s\n", *jiayuLoves);
    }
    return 0;
}

isdkz 发表于 2022-2-12 00:40:04

本帖最后由 isdkz 于 2022-2-12 00:43 编辑

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

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


#include <stdio.h>

int main()
{
      char *cBooks[]={
         "(C程序设计语言)",                                              // 加上逗号
         "(C专家编辑)",                                             // 加上逗号
         "(C和指针)",                                             // 加上逗号
         "(C陷阱与缺陷)",                                             // 加上逗号
         "(C Primer Plus)",                                             // 加上逗号
         "(带你学C带你飞)"};
         char **byFishC;//存放byFishC的地址
         char **jiayuLoves;
         int i;
         byFishC = &cBooks;
         jiayuLoves=&cBooks;
         jiayuLoves=&cBooks;
         jiayuLoves=&cBooks;
         jiayuLoves=&cBooks;
    printf("FishC出版的图书有:%s\n",*byFishC);                     // &改成*
    printf("小甲鱼喜欢的图书:\n");
   for(i=0;i<4;i++){
             printf("%s\n",*jiayuLoves);
         }
return 0;
}

tomok 发表于 2022-2-12 08:05:29

来学习

yuwew 发表于 2022-2-12 14:59:34

看看大佬

小城!! 发表于 2022-2-12 15:53:54

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

好的,谢谢了,是我太粗心了,跟着打都能打错

isdkz 发表于 2022-2-12 18:02:01

小城!! 发表于 2022-2-12 15:53
好的,谢谢了,是我太粗心了,跟着打都能打错

如果答案对您有帮助的话,顺手设置最佳呗,谢谢了
页: [1]
查看完整版本: 指针