以下程序有效:
int main()
{
char *g[10];
char a[10] = "test";
g[0] = &a[0];
printf("string = %s\n",g[0]);
exit(0);
}
输出:test
但这不起作用:
int main()
{
char t[] = "test";
struct abc
{
char *a[255];
}*p;
p->a[0] = &t[0];
printf("value = %s\n", p->a[0]);
exit(0);
}
输出:分段错误
有人可以告诉代码的第二部分可能存在什么问题吗?对不起,如果我在这里发错了。
答案 0 :(得分:3)
在第二个代码中,您使用指针p
而未初始化它。这会导致未定义的行为
试试这个
struct abc q;
p = &q;
p->a[0] = t;
printf("value = %s\n", p->a[0]);