gpt4 book ai didi

c - C 中指针的传递和赋值

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

我在使用指针时无法分配信息。

我无法在 readName 函数中分配任何值。你能检查我是否正确地分配了结构吗?或者有没有另一种方法可以在不改变击中和函数参数的情况下做到这一点?

typedef struct name
{
char info[];
int number;
//some more codes
} name;

typedef struct Data
{
name ** n;
//some more codes
} Data;


int readName(FILE *const fp, name **const names)
{
(*names)->number = 1; // no idea what to put here to store
strcat ((*names)->info, "aBC");
//codes
}

int read(FILE *const fp, Data *const data)
{
data->n = malloc(sizeof(name*)*1); // am I mallocing correctly?
data->n[0]=malloc(sizeof(name));
i = readName(fp, &data->n[Data->n]);
//codes
}

int main ()
{
Data * d;
d = malloc (sizeof (Data));
i = read(fp, d); //assume fp is decleared
//codes that usses the struct
}

最佳答案

  data->n = malloc(sizeof(name*)*1);   // am I mallocing correctly?
data->n[0]=malloc(sizeof(name));

您只为 1 个指针分配了空间 data->n = malloc(sizeof(name*)*1); 因此您有 1 指向名称结构的指针。

i = readName(fp, &data->n[filep->ncards]);

但是当你执行上述操作时,你只能执行&data->n[0],而不能执行&data->[1]或更高的下标。如果你想要有超过1个指向name的指针,你必须为指针分配空间,然后让指针指向一些有效的内存。

试试这个

data->n = malloc((struct name*)how many pointers you want); 
for(int i =0;i<how many pointers you want;i++)
data->n[i] = malloc(sizeof(struct name));

从你的代码来看,因为它不完整,我认为 ncards = 你想要多少个指针。

int readName(FILE *const fp, name **const names)
try
int readName(FILE *const fp, name ** names)

您将无法通过 const** 指针更改数据,请删除 const 并重试

关于c - C 中指针的传递和赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21924022/

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