gpt4 book ai didi

c - 将指针传递给嵌套函数

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

我在通过嵌套函数将指针传递给指针(结构)以为其分配或重新分配内存时遇到问题。我知道当传递给一个函数时,它是按值传递的,因此只能在本地编辑,但在语法上不清楚如何传递它。下面是重要的代码片段:

struct courseData{
char name[25];
int id;
};

void menuSwitch(int* courseNum, struct courseData** course);
void addCourse(int* courseNum, struct courseData** course);

int main(){

struct courseData* course = NULL;
int courseNum = 0;

menuSwitch(courseNum, &course); //Edited from original post.

return 0;
}

void menuSwitch(int* courseNum, struct courseData** course){

addCourse(&courseNum, course)
}

menuSwitch实际上是一个case switch,当菜单项被选中时调用函数addCourse。

void addCourse(int* courseNum, struct courseData** course){

if(*courseNum == 0)
*course = (struct courseData*) malloc(sizeof(struct courseData));
else
*course = (struct courseData*) realloc(*course, (*courseNum + 1)*sizeof(struct courseData));

*courseNum = *courseNum + 1; //Increments course count by 1

------code continues------
}

改正原问题后,gcc 编译出现以下错误/警告

main.c: In function ‘main’:
main.c:27:3: warning: passing argument 2 of ‘menuSwitch’ from incompatible pointer type [enabled by default]
header.h:24:6: note: expected ‘struct courseData *’ but argument is of type ‘struct courseData **’
func.c:60:6: error: conflicting types for ‘menuSwitch’
header.h:24:6: note: previous declaration of ‘menuSwitch’ was here
func.c: In function ‘menuSwitch’:
func.c:64:3: warning: passing argument 2 of ‘addCourse’ from incompatible pointer type [enabled by default]
header.h:26:6: note: expected ‘struct courseData *’ but argument is of type ‘struct courseData **’

感谢您的帮助,如果这是对编辑功能的不当使用,请原谅。

最佳答案

除了一行之外,一切都很好。在 void menuSwitch(int* courseNum, struct courseData** course) 中更改

addCourse(&courseNum, course)

addCourse(courseNum, course);

关于c - 将指针传递给嵌套函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22583066/

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