gpt4 book ai didi

c - 如何初始化动态分配结构的成员

转载 作者:行者123 更新时间:2023-11-30 19:03:08 25 4
gpt4 key购买 nike

我已经为两个结构分配了内存,并且试图为结构的成员提供一些值。但是,它不起作用,我不知道该怎么办。请帮助我了解发生了什么事。这是我的代码:

#include <stdio.h>
#include <std lib.h>
struct rec{
int i;
double f;
char c;
};

int main(){

struct rec *p;
p = (struct rec *) malloc(2*sizeof(struct rec));

p[0]->i = 10;
p[0]->f = 3.1;
p[0]->c = 'a';

p[1]->i = 20;
p[1]->f = 6.2;
p[1]->c = 'b';

free(p);

getchar();
return 0;
}

最佳答案

例如,p[0] 已经取消引用您的struct rec *p,这就是为什么当您尝试编译代码时,您将收到以下错误:

错误:“->”的类型参数无效(具有“struct rec”)

gcc 也会告诉你这个错误发生在哪里,例如:

p[0]->c = 'a';(源代码第 14 行)

发生这种情况是因为您尝试取消引用已经取消引用的p[0]

现在要解决此问题,只需将 -> 切换为 或者您也可以使用 (p + x)-> (x 是一个有效的数字,在您的情况下是从 0 到 1)来取消引用您的指针。

关于c - 如何初始化动态分配结构的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54534200/

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