gpt4 book ai didi

C 编程结构体初始化

转载 作者:行者123 更新时间:2023-11-30 16:27:10 24 4
gpt4 key购买 nike

假设我定义了以下结构并具有以下代码:

struct PVS{
int* values;
};

struct PVS** pvs = (struct PVS**) malloc(9 * sizeof(struct PVS*));
int i;
for(i = 0; i < 9; i++){
pvs[i] = (struct PVS*) malloc(9 * sizeof(struct PVS));
}

int j,k;
for(j = 0; j < 9; j++){
for(k = 0; k < 9; k++){
int* val = pvs[j][k].values;
}
}

如果我尝试访问 pvs[j][k] 会发生什么?编译器会抛出什么类型的错误?

最佳答案

不会发生错误,但values成员未初始化,因此val将具有任意内容。您正在调用所谓的未定义行为 (UB)。任何事情都可能发生,并且不会显示任何错误 - 一旦您访问 val,您就会很幸运地遇到崩溃。

您最好创建可以构造一个 PVS 的构造函数,以及另一个可以构造任意维数数组的构造函数。这样,您就可以避免一遍又一遍地重复相同的代码。您本质上是在实现一个多维 vector 容器。

关于C 编程结构体初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52822572/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com