gpt4 book ai didi

c - 在子函数中分配和初始化结构数组

转载 作者:太空宇宙 更新时间:2023-11-04 06:09:20 25 4
gpt4 key购买 nike

我有一个类似的问题here关于在子函数中分配和初始化指向结构的一个指针。不幸的是,我无法扩展我获得的用于初始化结构数组 的良好解决方案。第一个元素正常,但第二个(以及所有后续)元素为零/NULL。

这是一个注释示例。也许有人可以帮助我...

#include <stdio.h>
#include <stdlib.h>

typedef struct {int n;} mystruct;

void alloc_and_init_array(mystruct **s)
{
// create an array containing two elements
*s = calloc(sizeof(mystruct), 2);
(*s[0]).n = 100;
(*s[1]).n = 200;
}

int main(void)
{
mystruct *s; // only a pointer. No memory allocation.
alloc_and_init_array(&s);

printf("1st element: %d\n", s[0].n); // here I get 100, that's OK
printf("2nd element: %d\n", s[1].n); // here I get 0. Why?

return 0;
}

最佳答案

你需要一些括号:

((*s)[1]).n = 200;
^ extra parentheses required

下标 ([]) 比间接 (*) 具有更高的优先级,因此在没有括号的情况下它首先应用。

您需要取消引用 s 以获取它指向的数组,然后访问索引 1 处的元素。

关于c - 在子函数中分配和初始化结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3654306/

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