gpt4 book ai didi

c - 将指向结构的指针作为函数参数传递

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

我试图将一个指向结构的指针传递给一个单独的函数。但是当我去编译时,我得到了 warning: passing argument 1 of 'build_network_state' from incompatible pointer type

这是编译到我的程序中的辅助函数:

typedef struct router {
int num;
char label[64];
Topology *topology;
} Router;

这是来自 .c 文件:

void build_network_state(Router *ptr) {

fprintf(stdout, "Hello from router %s\n", ptr->label);
}

int main(int argc, char *argv[]) {

Router* this_router = malloc(sizeof(Router));

...

fprintf(stdout, "test: %s\n", this_router->label); // output looks fine if I comment the next line
build_network_state(&this_router);
}

最佳答案

build_network_state(&this_router);

应该是

build_network_state(this_router);

因为 this_router 已经是 Router * 类型。 (但是 &this_router 是类型 Router **)

Router* this_router = malloc(sizeof(Router));

应该是

Router* this_router = malloc(sizeof *this_router);

您要分配结构对象的大小,而不是指向结构对象的指针的大小。

关于c - 将指向结构的指针作为函数参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19820470/

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