2010-09-21 95 views
1

我想传递一个指针在C结构,但我不能: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 

我在做什么错? 谢谢。

+1

您需要发表更多的代码。 – tidwall 2010-09-21 22:36:23

+0

编译器错误说明了一切:结构在函数定义之前未定义。 – 2010-09-21 23:02:25

回答

4

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

无论是一个完整的定义:

struct aluno { 
    ... 
}; 

或至少是一个向前声明:

struct aluno; 
1

你需要让编译器知道有一个结构称为aluno你开始传递之前,到功能。

struct aluno { 
    int x; 
    int y; 
}; 

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

你有一个名为“aluno.h”文件(与struct aluno的定义),并且你将其纳入“aluno.c”?

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

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

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

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

不要忘记投票答复我的答案或接受它作为正式答案,如果它解决了您的问题。 – karlphillip 2010-09-22 19:12:07

3

在该文件中包含该行

float calcular_media(struct aluno *aluno) { 

下列操作之一,必须前行是有

  • struct declara例如:例如struct aluno;
  • struct 定义:例如, struct aluno { char c; int i; double d; };
  • 包括某个头文件的,其具有上述之一:例如, #include "aluno.h"