2010-09-21 227 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"