【问题标题】:C Struct pointer as ParameterC 结构指针作为参数
【发布时间】:2011-04-15 11:09:35
【问题描述】:

我正在尝试将指针传递给 C 中的结构,但我不能:

float calcular_media(struct aluno *aluno) {

输出警告:

C:\WINDOWS\system32\cmd.exe /c gcc main.c aluno.c
aluno.c:7:29: warning: 'struct aluno' declared inside parameter list

我做错了什么? 谢谢。

【问题讨论】:

  • 您需要发布更多代码。
  • 编译器错误说明了一切:结构体未在函数定义之前定义。

标签: c pointers parameters struct arguments


【解决方案1】:

你是在这个函数之前声明 struct aluno 吗?

具有完整定义:

struct aluno {
   ...
};

或者至少是一个前向声明:

struct aluno;

【讨论】:

    【解决方案2】:

    在开始将它传递给函数之前,您需要让编译器知道有一个名为 aluno 的结构。

    struct aluno {
       int x;
       int y;
    };
    
    float calcular_media(struct aluno * aluno) {
           // ...
    }
    

    【讨论】:

      【解决方案3】:

      您是否有一个名为“aluno.h”的文件(定义为struct aluno)并且您是否将其包含在“aluno.c”中?

      /* aluno.c */
      #include "aluno.h"
      
      float calcular_media(struct aluno *aluno) { /* ... */ }
      

      【讨论】:

        【解决方案4】:

        我相信你最终会做这样的事情:

        #include <stdio.h>
        struct aluno
        {
          int nota1;
          int nota2;
        }
        
        float calcular_media(struct aluno* individuo) 
        {
          printf("nota 1:%d\n", individuo->nota1);
          printf("nota 2:%d\n", individuo->nota2);
        }
        
        int main()
        {
          struct aluno primeiro_aluno;
          primeiro_aluno.nota1 = 9;
          primeiro_aluno.nota2 = 5;
        
          calcular_media(&primeiro_aluno);
        
          return 0;
        }
        

        【讨论】:

          【解决方案5】:

          在包含该行的文件中

          float calcular_media(struct aluno *aluno) {
          

          以下一项必须在该行之前存在

          • struct 声明:例如struct aluno;
          • 结构定义:例如struct aluno { char c; int i; double d; };
          • include 包含具有上述之一的某些头文件:例如#include "aluno.h"

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2020-12-14
            • 2011-10-24
            • 1970-01-01
            • 2019-04-22
            • 1970-01-01
            • 1970-01-01
            • 2014-04-23
            • 1970-01-01
            相关资源
            最近更新 更多