例一 :
1 #include <stdio.h> 2 #include <string.h> 3 4 struct Student { 5int sid ; 6char name[200] ; 7int age ; 8 }; 9 10 void f(struct Student *p);11 void g(struct Student *p);12 void h(struct Student stu);13 14 int main()15 {16struct Student stu ;17 18f(&stu);19g(&stu);20h(stu);21 22//printf("%d %s %d \n" ,stu.sid , stu.name , stu.age);23 24return 0 ;25 }26 27 void g(struct Student *p) //用指针可以减小内存占用 , 节省时间提高效率28 {29printf("%d %s %d \n", p -> sid , p -> name , p -> age);30 }31 32 void h(struct Student stu) //值传递33 {34printf("%d %s %d \n", stu.sid , stu.name ,stu.age);35 }36 37 void f(struct Student *p) //输入函数38 {39(*p).sid = 23 ; //等价 p -> sid = 23 ;40strcpy( p -> name , "zhangsan");41p -> age = 34 ;42 }
例二 :
1 //
2 // ——注释部分为第二种方法——///
3 //
4 #include <stdio.h>
5 #include <malloc.h>
6
7 struct Student
8 {
9int sid ;
10int age ;
11 };
12
13 //struct Student *CreateStudent(struct Student **q);
14 struct Student *CreateStudent(void);
15 void ShowStudent(struct Student *);
16
17 int main()
18 {
19struct Student *p ;
20
21//p = CreateStudent(&p);
22p = CreateStudent();
23ShowStudent(p);
24
25return 0 ;
26 }
27
28 //struct Student *CreateStudent(struct Student **q)
29 struct Student *CreateStudent(void)
30 {
31/*
32*q = (struct Student *)malloc(sizeof(struct Student));
33
34(*q) -> sid = 78 ; // " -> "优先级大于" * "
35(*q) -> age = 23 ;
36return *q;
37*/
38struct Student *p = (struct Student *)malloc(sizeof(struct Student));
39
40p -> sid = 78 ;
41p -> age = 23 ;
42
43return p ;
44 }
45
46 void ShowStudent(struct Student *ps)
47 {
48printf("%d %d \n" , ps -> sid , ps -> age);
49 }