我目前有一个包含指针数组指针的结构。我试图给指针数组中的元素赋值,但是我得到了一个分段错误。
aStruct->anArray[0]->string = test;
aStruct包含char ** anArray和char *字符串。 char * test =“test”。
当我尝试做我所做的事情时,我遇到了分段错误。该命令无效吗?
struct aStruct
{
char **anArray;
};
我用calloc制作了一个大小为10的数组。
答案 0 :(得分:0)
aStruct->anArray[0]->string = test;
aStruct包含char ** anArray和char *字符串。 char * test = “测试”。
该命令无效吗?
当然不是。 aStruct->anArray[0]
将为char*
,并且不会有成员->string
。
除此之外,如果它真的编译并且您只发布了错误的代码,那么如果anArray
被正确分配并且大小合适,则不会出现分段错误。所以你在程序中需要这样的东西:
aStruct->anArray = malloc(size * sizeof(*aStruct->anArray));
其中size至少为您的情况,但通常是您需要访问的元素数量。