内部有另一个结构的结构数组

问题描述 投票:0回答:1

我试图在 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++;
}

这可能是什么问题?我是使用结构和指针的新手。

c pointers struct segmentation-fault
1个回答
0
投票

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 返回某些内容),它将运行得“好一点”。

© www.soinside.com 2019 - 2024. All rights reserved.