1. 程式人生 > >《深入理解C指針》學習筆記(1)--- 指針之外

《深入理解C指針》學習筆記(1)--- 指針之外

結構 def form 學習 編程 stdlib.h struct 一個 char

  C語言從誕生之初就非常善於和硬件打交道,經過這麽多年的發展之後,其靈活性和超強的特征是受到幾乎所有程序員的肯定。C語言的這種靈活性很大一部分程度來源與C指針,指針為C語言動態操控內存提供了支持,同時也便於訪問硬件。由於編程的本質就是操控數據,而數據大多都在內存中,理解C管理內存的工作原理,就顯得尤為重要了。知道malloc()函數能夠從堆上申請內存,理解內存分配的本質則是另外的事。

  請看代碼例子:

  

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <string.h>
 4
 5
int main(int argc, char **argv) 6 { 7 typedef struct student{ 8 char name[10]; 9 char class[6]; 10 char sex[2]; 11 int age; 12 //char zhu 13 } Student; 14 15 Student stu; 16 strcpy(stu.name, "zhangsan"); 17 strcpy(stu.class, "A1411"); 18 strcpy(stu.sex, "
na"); 19 //stu.zhu = ‘n‘; 20 stu.age = 19; 21 22 printf("The stu information: \n"); 23 printf("Name:\t%s;\n", stu.name); 24 printf("Class:\t%s;\n", stu.class); 25 printf("Sex:\t%s;\n", stu.sex); 26 printf("Age:\t%d;\n", stu.age); 27 //printf("Zhu:\t%c;\n", stu.zhu); 28 29 printf("
The struct stu‘size is %d\n", sizeof(Student)); 30 31 return 0; 32 }

  保留12、19、27行的代碼的執行結果:

  The stu information:
  Name: zhangsan;
  Class: A1411;
  Sex: na;
  Age: 19;
  Zhu: n;
  The struct stu‘size is 28
  其中12行代碼和11行代碼交換後執行結果:

  The stu information:
  Name: zhangsan;
  Class: A1411;
  Sex: na;
  Age: 19;
  Zhu: n;
  The struct stu‘size is 24


  註釋12、19、27行的代碼的執行結果
  The stu information:
  Name: zhangsan;
  Class: A1411;
  Sex: na;
  Age: 19;
  The struct stu‘size is 24

  唯一的區別就是在結構體中增加了一個char型字符,但是結構體的大小增加了四個。

  這個例子充分說明想學好C語言,必須搞定C語言中計算機的內存分配的原理和機制,否則C語言總是一知半解的。

《深入理解C指針》學習筆記(1)--- 指針之外