1. 程式人生 > >指向結構體型別資料的指標

指向結構體型別資料的指標

#include <stdio.h>
#include <string.h>
int main()
{struct student
    {
        long num;
        char name[20];
        char sex;
        float score;
    }stu_1;
    struct student * p;
    p = &stu_1;
    stu_1.num = 800;
    strcpy(stu_1.name,"lijin");
    stu_1.sex = 'M';
    stu_1.score
= 90; printf("No.:%ld\nname:%s\nsex:%c\nscore:%f\n",stu_1.num, stu_1.name, stu_1.sex, stu_1.score); printf("No.:%ld\nname:%s\nsex:%c\nscore:%f\n",(* p).num, (* p).name, (* p).sex, (* p).score); }

結構體變數.成員名等價於(*p).num等價於p->num
用結構體變數和指向結構體的指標做函式引數
1.用結構體變數的成員作引數。用法與普通變數做引數一樣。
2.用結構體做實參。傳遞方式在空間和時間上開銷較大。而且在被呼叫期間改變了形參的值,就無法返回到主函式中去。
3.用指向結構體變數或陣列的指標做實參,將結構體變數或陣列的地址傳給形參。
結構體變數做函式引數

{int num;
char name[20];
float score[3];
};

int main()
{int print(struct student);
struct student stu;
stu.num = 12345;
strcpy(stu.name,"lijin");
stu.score[0] = 80;
stu.score[1] = 81;
stu.score[2] = 82;
print(stu);
};

int print(struct student stu)
{printf(FORMAT,stu.num, stu.name, stu.score[0], stu.score[1
], stu.score[2]); printf("\n"); }

用指向結構體變數的指標做引數

#include<stdio.h>
#include<string.h>
#define FORMAT"%d\n%s\n%f\n%f\n%f\n"
struct student
{int num;
char name[20];
float score[3];
};

int main()
{int print(struct student);
struct student stu;
stu.num = 12345;
strcpy(stu.name,"lijin");
stu.score[0] = 80;
stu.score[1] = 81;
stu.score[2] = 82;
print(stu);
};

int print(struct student stu)
{printf(FORMAT,stu.num, stu.name, stu.score[0], stu.score[1], stu.score[2]);
printf("\n");
}

此函式將&stu作為實參,被呼叫時將地址傳給形參p.