如何将指针分配给列表并在 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);
}
我已经设法指向一个数组,但是,我最接近指向一个 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);
}