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

标签 c function pointers struct parameter-passing

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

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/

相关文章:

c - valgrind 报告未释放的 block

c - 结构数组指针的臭名昭著的动态分配

c - 警告 : passing argument 1 of makes integer from pointer without a cast [enabled by default]

Python。有没有办法选择一个随机的def?

c - 在使用 malloc 和指针理解此代码时需要帮助

c - 尝试乘以 2 个矩阵时出现段错误 11

java - 在 JAVA 中从 main 访问函数内的数组或变量

JavaScript - 在字符串中查找文本的函数

c++ - 指针 - 将 ptr 传递给 ptr 或传递 ptr 的地址

c - C 中的数据结构,指针为 : I want to store an array of information in each position