1. 静态内存的用法:  
  2. /*  
  3. 静态变量是不能跨函数使用   
  4.    
  5. 取地址和我要指向你之前有什么区别   
  6. int * p =88;  
  7. 输出 :*p   
  8. */ 
  9.  
  10. #include <stdio.h>  
  11.  
  12. /*  
  13. 你 保持的因为是**b类型的  ,但是我又要用到指针才可以保持  所有 int* **q   
  14. 我如果我想更改一个值,我怎么样去修改呢? int *   
  15.  
  16. 程序是没有错误的!但是你用法错了.因为   
  17.  
  18. 虽然结果是对的.只不过逻辑上有问题。   
  19. */ 
  20. void show(int* **q)  //int *是我的指针类型  **q   
  21. {  
  22.     int i = 55;  
  23. //  ***q = i;  //我想输出它所指向的值,那么我们就这样写     
  24.     **q = &i;  
  25.       
  26. }  
  27. int main(void)  
  28. {  
  29.     int i = 5; //22FF74#   
  30.     int *a = &i;   
  31.     int **b = &a;  //你其实这一个步骤取了我a本来的内存地址!   
  32.     **b = 100;  
  33.     show(&b);   
  34.     printf("%X#\n",&i);  
  35.     printf("%X#\n",a); //22FF74#  
  36.     printf("%X#\n",*b);//22FF70#  
  37.     printf("%d\n",i);  
  38.     printf("%d\n",*a);  
  39.     return 0;  
  40. }  
  41.  
  42.  
  43.  
  44. 动态内存的用法:  
  45.  
  46. #include <stdio.h>  
  47. #include <malloc.h>  
  48.  
  49. void show(int * ***q)  
  50. {  
  51.     ***q = (int *) malloc(sizeof(int));  //动态内存.需要手动释放。   
  52. //  int b =88;  // 静态的意见就被释放掉了.而到时候是不是没有了/。   
  53. //  ***q = &b;  
  54.     ****q = 99;  
  55.     return ;  
  56. }  
  57. int main(void)  
  58. {  
  59.     int i = 10;  
  60.     int *a = &i;  
  61.     int **b = &a;  
  62.     int ***c = &b;  
  63.     printf("%X#\n",a);  
  64.     printf("%X#\n",**c);  
  65.     show(&c);  
  66.     printf("%d\n",i);  
  67.     free(**c);  
  68.     return 0;  
  69. }  
  70.  
  71. 结构体:  
  72.  
  73. 为什么需要结构体  
  74. 1.为了表示一些复杂的食物,而普通的基本类型往往不能满足要求  
  75.  
  76. 2.什么叫结构体  
  77. 把一些基本数据类型结合在一起形成一个新的复合数据类型,这个就叫结构体  
  78.  
  79. 如何定义结构体  
  80.  
  81. 有三种方式,但是建议使用第一种  
  82.  
  83. /*  
  84. 如何定义结构体.需要三种方式   
  85. */   
  86. #include <stdio.h>  
  87. //第一种方式:  
  88.     struct Student  
  89.     {  
  90.         int age;  
  91.         double score;  
  92.         char sex;  
  93.     };  
  94.       
  95.  
  96. int main(void)  
  97. {  
  98.     struct Student st2 = {18,88.8,'F'};  
  99.       
  100.     return 0;  
  101. }  
  102.  
  103. 怎样使用结构体变量  
  104.     赋值和初始化  
  105.     定义的同时可以整体赋初值  
  106.     如果定义完之后就只能单个的赋初始值  
  107.  
  108.  
  109. #include <stdio.h>  
  110. struct Student   
  111. {  
  112.     int age ;  
  113.     double score;     
  114. };  //注意就是一定要加分号   
  115. int main(void)  
  116. {  
  117.     struct Student xiaoxi = {19,88.8};  //这里的规格{, };     
  118.     printf("%d\n",xiaoxi.age);    
  119.       
  120.     //我创建了一个Student 类型的  指针变量为meiyi    
  121.     struct Student *meiyi ;  
  122.     //meiyi 是指针变量 我获取了xiaoxi的地址   
  123.     meiyi = &xiaoxi;  
  124.     //等价于 (*meiyi).age 我们又知道(*meiyi 其实就是)xiaoxi 那么我们通过   
  125.     meiyi->age= 17;  
  126.     printf("%d\n",xiaoxi.age);  
  127.       
  128.     return 0;  
  129. }  
  130.  
  131.  
  132.  
  133.  
  134.