C语言——指针与结构体 内存的动态分配
生活随笔
收集整理的這篇文章主要介紹了
C语言——指针与结构体 内存的动态分配
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
例一 :
1 #include <stdio.h> 2 #include <string.h> 3 4 struct Student { 5 int sid ; 6 char name[200] ; 7 int 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 { 16 struct Student stu ; 17 18 f(&stu); 19 g(&stu); 20 h(stu); 21 22 //printf("%d %s %d \n" ,stu.sid , stu.name , stu.age);23 24 return 0 ; 25 } 26 27 void g(struct Student *p) //用指針可以減小內存占用 , 節省時間提高效率28 { 29 printf("%d %s %d \n", p -> sid , p -> name , p -> age); 30 } 31 32 void h(struct Student stu) //值傳遞33 { 34 printf("%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 ;40 strcpy( p -> name , "zhangsan"); 41 p -> age = 34 ; 42 }例二 :
?
1 //2 // ——注釋部分為第二種方法——///
3 //
4 #include <stdio.h>
5 #include <malloc.h>
6
7 struct Student
8 {
9 int sid ;
10 int 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 {
19 struct Student *p ;
20
21 //p = CreateStudent(&p);
22 p = CreateStudent();
23 ShowStudent(p);
24
25 return 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 ;
36 return *q;
37 */
38 struct Student *p = (struct Student *)malloc(sizeof(struct Student));
39
40 p -> sid = 78 ;
41 p -> age = 23 ;
42
43 return p ;
44 }
45
46 void ShowStudent(struct Student *ps)
47 {
48 printf("%d %d \n" , ps -> sid , ps -> age);
49 }
轉載于:https://blog.51cto.com/699794/925327
總結
以上是生活随笔為你收集整理的C语言——指针与结构体 内存的动态分配的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iptables(二)--扩展详解
- 下一篇: 获取类对象引用