【发布时间】:2020-09-08 09:49:06
【问题描述】:
我有一个定义为包含字符串的 char** 数组的结构。我不知道如何对其内容运行 printf。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#ifndef STRUCT_STRING_ARRAY
#define STRUCT_STRING_ARRAY
typedef struct s_string_array
{
int size;
char** array;
} string_array;
#endif
void my_print_words_array(string_array* param_1)
{
int len = param_1->size;
char **d = param_1->array;
for(int i = 0 ; i < len;i++){
printf("%s\n", d[i]);
}
}
int main(){
struct s_string_array *d;
d->size = 2;
char **my_arr = (char *[]){"hello", "world"};//this init is fine
d->array = my_arr;
my_print_words_array(d);
return 0 ;
}
主函数给了我段错误。怎么了?
【问题讨论】:
-
你在哪里为结构分配内存?
-
@RobertHarvey 嗨,你的意思是它有效吗?没有复制?你的意思是我应该放一个可执行在线 ide 的链接?
-
嗯...我倾向于同意托尼的观点。你没有为
struct s_string_array *d;分配内存 -
所以可能是UB。
标签: c pointers struct char c99