C Struct指针作为参数

joh*_*eli 1 c parameters struct pointers arguments

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

float calcular_media(struct aluno *aluno) {
Run Code Online (Sandbox Code Playgroud)

输出警告:

C:\WINDOWS\system32\cmd.exe /c gcc main.c aluno.c
aluno.c:7:29: warning: 'struct aluno' declared inside parameter list
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?谢谢.

jse*_*gal 5

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

或者有一个完整的定义:

struct aluno {
   ...
};
Run Code Online (Sandbox Code Playgroud)

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

struct aluno;
Run Code Online (Sandbox Code Playgroud)


kar*_*lip 5

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

#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;
}
Run Code Online (Sandbox Code Playgroud)


Aru*_*run 5

在包含该行的文件中

float calcular_media(struct aluno *aluno) {
Run Code Online (Sandbox Code Playgroud)

在线前必须有下列之一

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