如何分配一个指向列表的指针并用c语言打印出来?
我已经设法指向一个数组,但是,最接近指向char*列表的数组只打印出单个字母,如下所示:如何分配一个指向列表的指针并用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
#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]。