C提高1内存四区变量本质栈开口方向指针铁律1

  


<强> C提高第一天复习

<强>内存四区,变量常量的本质,函数调用模型,栈开口方向,指针铁律,指针是一种数据类型




C提高学员标准:写一个标准的冒泡排序

选择法或者冒泡法排序

在一个函数内排序

通过函数调用的方式排序

数组做函数参数的技术盲点和推演,

# include  & lt; stdio.h>   # include  & lt; stdlib.h>   # include  & lt; string.h>      int  main ()   {   int 小姐:=,0;   int  j =, 0;   int  tmp =, 0;   int [],=,{3 66年,54岁,32岁,11日,22日,99年,2334年,32};      for (小姐:=,0;,小姐:& lt;, sizeof (a),/, sizeof (int);,我+ +)   {   printf (" % d ”,[我]);   }   printf (" \ n ",[我]);      for (小姐:=,0;,小姐:& lt;, sizeof (a),/, sizeof (int);,我+ +)   {   for  (j =, + 1,, j  & lt;, sizeof (a),/, sizeof (int);, j + +)   {   if ([我],祝辞,[j])   {   tmp =,(我);   [我],=,[j];   一个[j],=, tmp;   }   }   }      for (小姐:=,0;,小姐:& lt;, sizeof (a),/, sizeof (int);,我+ +)   {   printf (" % d  ",[我]);   }   printf (" \ n ",[我]);            系统(“暂停”);   }      编译运行:   3,66,54岁,32岁,11日,22日,99年,2334年,32岁   3,11日,22日,32,32岁,54岁,66,99,2334   请按任意键继续只只。


冒泡程序,优化输出与排序与函数的数组参数问题

# include  & lt; stdio.h>   # include  & lt; stdlib.h>   # include  & lt; string.h>      void  printfArray (int []数组,int 兰)   {   int 我;   for (小姐:=,0;,小姐:& lt;, len;,我+ +)   {   printf (" % d  ",阵列[我]);   }   printf (" \ n ",数组[我]);   }//数组做函数的参数的退回问题,退回为一个指针//结论:把数组内存的首地址和有效长度传给被调用的函数//本质:函数中的数组形参,编译器会把它当成指针处理   void  sortArray (int []数组,int 兰)   {   int  i, j, tmp;   for (小姐:=,0;,小姐:& lt; len;,我+ +)   {   for  (j =,小姐:+,1;,j  & lt;, len;, j + +)   {   if  (array[我],祝辞,阵列[j])   {   时间=tmp 数组(我);   [我]数组,=,数组[j];   array [j],=, tmp;   }   }   }   }         int  main ()   {      int [],=,{3 66年,54岁,32岁,11日,22日,99年,2334年,32};   int  len =, sizeof (a),/, sizeof (int);      printfArray (a,, len);   sortArray (len);   printfArray (a,, len);      系统(“暂停”);   }            编译运行:   3,66,54岁,32岁,11日,22日,99年,2334年,32岁   3,11日,22日,32,32岁,54岁,66,99,2334   请按任意键继续只只。



数据类型概念:

”类型”是对数据的抽象,

类型相同的数据有相同的表示形式,存储格式以及相关的操作,

程序中使用的所有数据都必定属于某一种数据类型,

 C提高1内存四区变量本质栈开口方向指针铁律1




基本数据类型:typedef数组与地址

# include  & lt; stdio.h>   # include  & lt; stdlib.h>   # include  & lt; string.h>         struct 老师1 {   char 名称[64];   int 年龄;   }老师1;//使用typedef,以后定义就是这样了,Teacher2  t2;   typedef  struct  teacher2 {   char 名称[64];   int 年龄;   }Teacher2;         int  main ()   {      int  b [10];   printf (" % d ,, b + 1: % d  \ n”,, b,, b  +, 1);   printf (", b: % d,,, b + 1: % d  \ n”,,,,,, b  +, 1);//,b 代表数组首元素的地址//,,b代表整个数组的地址//,,b + 1代表跨过整个数组地址         struct  teacher1  t1;   时间=Teacher1.age  0;   Teacher2  t2;      typedef  int  u32;   printf (" u32 =% d  \ n”, sizeof (u32));         系统(“暂停”);   }   编译运行:   b: 3603504,, b + 1:3603508   和b: 3603504,, b + 1:3603544   u32 =4   请按任意键继续只只。

C提高1内存四区变量本质栈开口方向指针铁律1