如何从其他函数初始化字符**?

  • 本文关键字:字符 初始化 函数 其他 c
  • 更新时间 :
  • 英文 :


我在以下代码上遇到分段错误:

#include <stdio.h>
#include <stdlib.h>
#include <string.h> 
void init_test(char ***test) {
*test = malloc(2 * sizeof(char *));
*test[0] = malloc(3); 
*test[1] = malloc(3); 
strcpy(*test[0], "12"); 
strcpy(*test[1], "13"); 
}
int main()
{
char **test = NULL;
init_test(&test); 
printf("1: %s, 2: %s", test[0], test[1]); 
printf("Hello World");
return 0;
}

我有几个不同的变体,但我不确定如何在不同的函数中正确初始化 char**。

这是运算符优先级的问题。表达式*test[0]等于*(test[0]),而不是您期望的(*test)[0]

数组索引运算符的优先级高于取消引用运算符。 您需要添加括号:

(*test)[0] = malloc(3); 
(*test)[1] = malloc(3); 
strcpy((*test)[0], "12"); 
strcpy((*test)[1], "13"); 

最新更新