C Struct指针作为参数

时间:2010-09-21 22:29:22

标签: c pointers parameters struct arguments

我正在尝试将指针传递给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

我做错了什么? 谢谢。

5 个答案:

答案 0 :(得分:5)

在包含该行

的文件中
float calcular_media(struct aluno *aluno) {

以下其中一项必须在行

之前
  • struct 声明:例如struct aluno;
  • struct 定义:例如struct aluno { char c; int i; double d; };
  • 某些头文件的
  • 包含,其中包含以上内容之一: #include "aluno.h"

答案 1 :(得分:4)

你是否在此函数之前声明了struct aluno?

使用完整定义:

struct aluno {
   ...
};

或者至少是前瞻声明:

struct aluno;

答案 2 :(得分:3)

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

#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;
}

答案 3 :(得分:1)

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

struct aluno {
   int x;
   int y;
};

float calcular_media(struct aluno * aluno) {
       // ...
}

答案 4 :(得分:1)

你有一个名为“aluno.h”的文件(带有struct aluno的定义),你是否将它包含在“aluno.c”中?

/* aluno.c */
#include "aluno.h"

float calcular_media(struct aluno *aluno) { /* ... */ }