gpt4 book ai didi

c - 无法将结构传递给结构内的指针

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

给定以下定义:

#define arrayLengthInStruct 50

typedef struct {
int _buf[arrayLengthInStruct];
int _bufLen;
} list;

// nested struct seems redundant but is there for some specific use
struct dev_req {
struct {
struct {
int src;
}serviceReq;
}_req;
};

在主函数中

   int i=0;

// to pass the memory location
list g_src; // data is here
struct dev_req *dev_Areq; // to be loaded/ transfer to here

g_src._bufLen = arrayLengthInStruct;
// initialize the source
for (i = 0; i < g_src._bufLen; i++) {
g_src._buf[i] = i+1;
printf("%d \t", g_src._buf[i]);
}
printf("\n");

接下来的两行失败了

   //dev_Areq->_req.serviceReq.src = malloc(sizeof(g_src));    // failed
//dev_Areq->_req.serviceReq.src = (list*) &g_src; // failed

即使在通过前 1 行之后,下一部分是否可以工作也不清楚。

/*
for (i = 0; i < (dev_Areq->_req.serviceReq.src)->_bufLen; i++) {
printf("%d \t", (dev_Areq->_req.serviceReq.src)->_buf[i]);
}
printf("\n");
*/

最佳答案

首先,dev_Areq是一个指针类型,它指向的内存还没有分配。

dev_Areq = (struct dev_req *)malloc(sizeof(struct dev_req ));

只有在那之后,您才能访问它的 _req 元素。

其次,你想将src指向一个list类型,并访问它的元素,那么你应该将src定义为list * 类型而不是 int。然后使用这一行将 src 指向 g_src:

dev_Areq->_req.serviceReq.src = (list*) &g_src;

关于c - 无法将结构传递给结构内的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21639082/

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