2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > C语言——指针与结构体 内存的动态分配

C语言——指针与结构体 内存的动态分配

时间:2024-06-24 18:06:03

相关推荐

C语言——指针与结构体 内存的动态分配

例一 :

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 }

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。