如何分配一个指向列表的指针并用c语言打印出来?

如何分配一个指向列表的指针并用c语言打印出来?,c,pointers,char,C,Pointers,Char,我已经设法指向一个数组,但是,最接近指向char*列表的数组只打印出单个字母,如下所示: #include <stdio.h> main() { char* list[2]; list[0] = "Hullo"; list[1] = "GoodBye"; char* pointer = &(list); char* back = *(list); printf("%c", back[8]); } #包括 main

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

#include <stdio.h>

main()
{
char* list[2];
list[0] = "Hullo";
list[1] = "GoodBye";
char* pointer = &(list);
char* back = *(list);
printf("%c", back[8]);
}
#包括
main()
{
字符*列表[2];
列表[0]=“Hullo”;
列表[1]=“再见”;
字符*指针=&(列表);
char*back=*(列表);
printf(“%c”,背面[8]);
}
背面的0到4打印出“Hullo”,5到7是空白,8到14打印出“再见”


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

感觉您正在寻找:

#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++);
        }
}
#包括
int
主(空)
{
字符*列表[2];
列表[0]=“Hullo”;
列表[1]=“再见”;
字符**指针=列表;
对于(大小i=0;i
但也许你在寻找这样的东西:

#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);
}
#包括
#包括
煤焦**
富(无效)
{
char**p=malloc(3*sizeof*p);
if(p==NULL){
佩罗尔(“马洛克”);
出口(1);
}
p[0]=“呼洛”;
p[1]=“再见”;
p[2]=NULL;
返回p;
}
int
主(空)
{
char**p=foo();
对于(;*p;p++){
printf(“%s\n”,*p);
}
自由基(p);
}

避免访问超出范围的区域。C中的字符串以空字符
'\0'
结尾,因此请进行搜索。若要处理元素数未指定的列表,请分别传递元素数或在列表末尾插入标记(例如,
null
)。
&list
的类型是指向
char
的两个指针数组的指针。或者
char*(*)[2]
。另外,
*list
list[0]
相同,这意味着
back
指向第一个字符串,这是一个由6个元素组成的数组。您好!谢谢你的回复!不幸的是,将此应用于函数时,如下所示:#include char**func(){char*list[2];list[0]=“Hullo”;list[1]=“再见”;char**pointer=list;return pointer;}main(void){char**pointer=func();for(size_t i=0;ipointer的类型是
char**
,那么
char*point=**pointer
是一个类型错误。我仍然不清楚你到底在做什么。我正在尝试使用指针从函数返回一个字符列表。然而,我只成功地打印出了每个单独的字符,正如你在我的原始问题以及我之前的评论中所看到的。我想将“Hullo”打印为列表[0],将“再见”打印为列表[1]。