天天看點

C語言自定義資料類型放的位置

C語言常見問題

C語言中函數原型(聲明)和自定義資料類型的聲明順序。

代碼A

#include <stdio.h>

struct student *del(struct student *head, int num);

typedef struct student
{
    int num;
    float score;
    struct student *next;
} student;

int main(int argc, char *argv[]){
    return 0;
}
           

運作結果

編譯通過,沒有錯誤、警告

代碼B

#include <stdio.h>

student *insert(student *head, student *stu_2);

typedef struct student
{
    int num;
    float score;
    struct student *next;
} student;

int main(int argc, char *argv[]){
    return 0;
}
           

運作結果

bao:day0921 bao$ gcc -o test2 test2.c

test2.c:5:1: error: unknown type name ‘student’

student *insert(student *head, student *stu_2);

^

test2.c:5:17: error: unknown type name ‘student’

student *insert(student *head, student *stu_2);

^

test2.c:5:32: error: unknown type name ‘student’

student *insert(student *head, student *stu_2);

^

3 errors generated.

代碼C

#include <stdio.h>

typedef struct student
{
    int num;
    float score;
    struct student *next;
} student;

student *insert(student *head, student *stu_2);
struct student *del(struct student *head, int num);

int main(int argc, char *argv[]){
    
    return 0;
}
           
運作結果:編譯通過

是以養成良好的代碼習慣,先“寫”自定義結構體等資料類型,再去使用。

繼續閱讀