如何将指针分配给列表并在 c 中打印出来?

How to assign a pointer to a list and print it out in c?

我已经设法指向一个数组,但是,我最接近指向一个 char* 列表的地方只打印出单个字母,如下所示:

#include <stdio.h>

main()
{
char* list[2];
list[0] = "Hullo";
list[1] = "GoodBye";
char* pointer = &(list);
char* back = *(list);
printf("%c", back[8]);
}

后面的0到4打印出“Hullo”,5到7是空格,8到14打印出“Goodbye”。

我想知道如何避免将此列表字符打印到字符,因为在返回未指定大小的列表并计划将它们用于其他功能等时,这会成为一个非常不便的问题。

感觉你在找:

#include <stdio.h>

int
main(void)
{
        char * list[2];
        list[0] = "Hullo";
        list[1] = "GoodBye";
        char ** pointer = list;
        for( size_t i = 0; i < sizeof list / sizeof *list; i++ ){
                printf("%s\n", *pointer++);
        }
}

但也许您正在寻找类似的东西:

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

char **
foo(void)
{
        char **p = malloc(3 * sizeof *p);
        if( p == NULL ){
                perror("malloc");
                exit(1);
        }
        p[0] = "Hullo";
        p[1] = "GoodBye";
        p[2] = NULL;
        return p;
}

int
main(void)
{
        char **p = foo();
        for( ; *p; p++ ){
                printf("%s\n", *p);
        }
        free(p);
}