我一直试图让这个工作好几个小时,但我似乎无法理解它。
我正在尝试编写一个能够返回字符串数组的函数。
#include <stdio.h>
#include <stdlib.h>
/**
* This is just a test, error checking ommited
*/
int FillArray( char *** Data );
int main()
{
char ** Data; //will hold the array
//build array
FillArray( &Data );
//output to test if it worked
printf( "%s\n", Data[0] );
printf( "%s\n", Data[1] );
return EXIT_SUCCESS;
}
int FillArray( char *** Data )
{
//allocate enough for 2 indices
*Data = malloc( sizeof(char*) * 2 );
//strings that will be stored
char * Hello = "hello\0";
char * Goodbye = "goodbye\0";
//fill the array
Data[0] = &Hello;
Data[1] = &Goodbye;
return EXIT_SUCCESS;
}
我可能会在某处混淆指针,因为我得到以下输出:
您好
分段错误
答案 0 :(得分:10)
是的,你的指针间接混淆了,数据数组的成员应该像这样设置:
(*Data)[0] = Hello;
(*Data)[1] = Goodbye;
在函数中,Data
指向到数组,它本身不是数组。
另一个注意事项:您不需要在字符串文字中放置显式\0
个字符,它们会自动以空值终止。