【发布时间】:2019-04-15 12:53:44
【问题描述】:
我有以下代码。当我将数组“ADDRESS.Person”写入任何值时,出现“分段错误内存转储”的错误。请任何人帮我解决一个问题。
#include <stdio.h>
typedef struct
{
char Person[15];
} stName;
typedef struct
{
stName Name;
} stSociety;
stSociety* SOCIETY;
#define ADDRESS SOCIETY->Name
int main()
{
int i;
for (i=0; i<32; i++)
{
ADDRESS.Person[i] = 0;
}
printf("ADDRESS.Person=%s\n", ADDRESS.Person);
printf("Finished");
return 0;
}
【问题讨论】:
-
SOCIETY指向哪里?您需要在取消引用之前使其指向有效内存。 -
Person是char[15],但您从0写到31?此外,您永远不会分配SOCIETY或指向已分配的对象。 -
顺便说一句:
#define ADDRESS SOCIETY->Name是一个非常糟糕的主意,它只会给你的代码增加混乱。并且所有大写标识符都应该只用于宏,这是按照惯例。 -
也告诉我们您想要达到的目标,然后我们可以帮助您走向正确的方向。你的代码应该打印什么?