gpt4 book ai didi

c - 赋值使指针来自整数,无需在结构中进行强制转换

转载 作者:行者123 更新时间:2023-11-30 15:38:41 25 4
gpt4 key购买 nike

我正在制作一个动态创建整数列表的程序。

int ins_dlist(int data, struct dlist **p){
struct dlist *q;

if((*p)->sz == (*p)->maxsz){
q = realloc(*p, DLISTSZ((*p)->maxsz + INCRSZ));
if(q == NULL)
return (-1);
q->maxsz += INCRSZ;
*p = q;
}

//(*p)->item[(*p)->sz++] = data; <-Gives me pointer from integer without cast
*((*p)->item + (*p)->sz++) = data;
return(0);

}

我的问题出在 *((*p)->item + (*p)->sz++) = data; 我尝试以不同的方式声明它,但仍然无法访问到我的结构中的 sz 变量。这是我的结构声明,它位于名为 dlist.h 的文件中:

#include <stdlib.h>
struct dlist{
int sz;
int maxsz;
int *item[1];
};

#define INITSZ 5
#define INCRSZ 5
#define DLISTSZ(n) ((size_t)(sizeof(struct dlist)) + ((n-1)*sizeof(int)))

struct dlist *init_dlist(int num);
int ins_dlist(int data, struct dlist **p);

最佳答案

您可能想将 dllist 定义为:

struct dlist{
int sz;
int maxsz;
int item[1];
};

关于c - 赋值使指针来自整数,无需在结构中进行强制转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21671092/

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