我试图在 C 中声明一个数组,但问题是数组的类型是
struct Client
,其中有一个 struct Register
类型的变量。
typedef struct Client {
Register *clientId;
char name[50];
char date[10];
} Client;
typedef struct Register {
int id;
int frozen;
} Register;
Client cli[7];
但是,当我尝试为该变量赋值时,程序崩溃了。第一次,它打印一个随机数,在下一个循环中,它返回一个分段错误。
int i = 0;
while(i<7){
cli.clientId->id = 7;
cli.clientId->frozen = 0;
strcpy(cli[i].name, "Breno");
strcpy(cli[i].date, "09/2024");
printf("%d\n", cli[i].clientId->id);
i++;
}
这可能是什么问题?我是使用结构和指针的新手。
cli.clientId 是一个未分配任何内容的指针。当你完成任务时:
cli.clientId->id = 7;
cli.clientId->frozen = 0;
您正在分配一个未初始化的变量,这将导致可能包括随机数和分段错误的问题。
如果您的初始化循环包含:
cli[i].clientId=malloc(sizeof(Register))
cli[i].clientId->id = 7;
cli[i].clientId->frozen = 0;
(通过检查以确保 malloc 返回某些内容),它将运行得“好一点”。