奥普瓯江 发表于 2017-11-24 21:58:36

C二级指针无法输出,请求大神给改一下下谢谢

本帖最后由 奥普瓯江 于 2017-11-24 22:34 编辑

#include<stdio.h>
#include<stdlib.h>



int main(void)
{
                char *hot1 = "nihaowoshi";
                char *hot2 = "bzhidao";
                char *hot3 = "shemeyis";
                char *hot4 = "haoniget";
                char *hot5 = NULL;

                char *cool;

                cool = hot1;
                cool = hot2;
                cool = hot3;
                cool = hot4;
                cool = hot5;

                /*while (*(*cool) - 1 != '\0')
                {
                                printf("%c", *(*cool)++);
                }*/
                char *may;

                while ((may = (*cool)++) != NULL)
                {
                                while (*may != '\n')
                                {
                                                printf("%c", *may++);
                                }
                }


                return 0;
}

BngThea 发表于 2017-11-24 22:31:29

5个元素的数组为何自定义长度为4

奥普瓯江 发表于 2017-11-24 22:34:57

BngThea 发表于 2017-11-24 22:31
5个元素的数组为何自定义长度为4

没注意我在试试

奥普瓯江 发表于 2017-11-24 22:36:45

BngThea 发表于 2017-11-24 22:31
5个元素的数组为何自定义长度为4

还是一样编辑不了

BngThea 发表于 2017-11-25 08:04:57

奥普瓯江 发表于 2017-11-24 22:36
还是一样编辑不了

错误提示呢

上善若水··· 发表于 2017-11-25 10:24:02

char *may = new char;编译器不一样这个地方可能编译不同,如果直接是char *may; may并没有被分配地址,所以用new从堆中给它分配。
还有 while ((may = (*cool)++) != NULL) 这句话,循环到第五个时不会结束,会一直循环下去,这是由于内存分配地址后,++会指向下一个,不会为NULL的。

qq1242009750 发表于 2017-11-25 10:32:15

根据我的观察是 30行循环的 判断错了   因改为 *may != '\0'.
因为字符串是以'\0' 作为结束标志,而不是'\n'{:5_101:}
页: [1]
查看完整版本: C二级指针无法输出,请求大神给改一下下谢谢