c语言中一堆数组,c语言中一堆数组

  c语言中一堆数组,c语言中一堆数组

  Yyds干货库存

  (I)一维数组1的创建和初始化。数组的创建数组是一组相同类型的元素,

  创建方法是:type_t arr_name [const_n]

  注意:

  Type_t是一个数组类型。

  Const_n是一个常量表达式,用于指定数组的大小。

  示例:

  Int arr1[10]是正确的。

  int count=10int arr 2[计数]错误

  2.数组int arr1[10]={1,2,3}的初始化;没有完全初始化,其余的元素默认初始化为0。

  char arr2[5]={a , b , c };是a,b,c,

  Char arr2[5]=abc 也可以初始化,是a,b,c,\0,

  char arr 4[]= abcdef ;就是a,b,c,d,e,f,\0,一共七个。

  注意:

  #包含stdio.h

  #包含字符串. h

  int main()

  {

  char arr 4[]= abcdef ;

  printf(%d\n ,sizeof(arr 4));

  printf(%d\n ,strlen(arr 4));

  返回0;

  }

  Sizeof是计算arr4占用的空间。

  Strlen正在尝试查找字符串的长度(遇到\0时停止,不计数\ 0;随机大小,不会遇到\0)

  strlen和sizeof之间没有联系;

  Strlen是求字符串的长度;仅查找字符串的长度;是库函数,引用头文件;

  Zeof是计算变量、数组和类型的大小;是一个单位字节;是一个运算符;

  #包含stdio.h

  #包含字符串. h

  int main()

  {

  char arr 1[]= ABC ;

  char arr2[]={a , b , c };

  printf(%d\n ,sizeof(arr 1));//4 a,b,c,\0

  printf(%d\n ,sizeof(arr 2));//3 a、b、c

  printf(%d\n ,strlen(arr 1));//3 a、b、c

  printf(%d\n ,strlen(arr 2));//随机数a,b,c.

  返回0;

  }

  “ABC”_ _ _ a,a,c,\0字符数组的末尾有\0

  {1,2,3,4}___1,2,3,4整数数组末尾没有\0。

  3.一维数组的使用

  对于数组的使用,我们之前学过下标引用运算符[]。它实际上是数组访问的操作符。代码如下:

  #包含stdio.h

  int main()

  {

  char arr[]= abcdef ;

  int I=0;

  for(I=0;I=strlen(arr);我)

  printf(%c ,arr[I]);//arr数组名[3]下标=这个数字

  返回0;

  }

  虽然此时可以运行,但由于strlen输出默认为无符号数,因此可以优化如下:

  (int)strlen(arr)或int len=strlen(arr);伦

  摘要

  可以使用下标访问数组,下标从0开始;

  可以计算数组的大小。

  3.一维数组在内存中的存储# includesdio.h

  int main()

  {

  int arr[]={ 1,2,3,4,5,6,7,8,9,10 };

  int I=0;

  int SZ=sizeof(arr)/sizeof(arr[0]);

  for(I=0;i=sz我)

  printf(arr[%d]=%p\n ,I,arr[I]);//arr[i]是我被带走时的地址

  返回0;

  }

  每个地址差为4;是元素整形,占4个字节;

  所以数组是连续存储的。

  (II)二维数组1的创建和初始化。创建二维数组int arr[3][4]意味着三行四列。

  int int int int

  int int int int

  int int int int

  #包含stdio.h

  int main()

  {

  int arr[3][4]={ 1,2,3,4,5 };

  返回0;

  }

  我们发现这样写会把1 2 3 4填一行,然后把5填第二行。

  那我现在怎么把1 ^ 2 ^ 3放在第一行,把4 ^ 5放在第二行就行了?

  那很好。

  #包含stdio.h

  int main()

  {

  int arr[3][4]={ {1,2,3},{4,5 } };

  返回0;

  }

  2.二维数组int arr [][4]={1,2,3,4}的初始化即使初始化了,也可以省略行,但是不能省略列。

  #包含stdio.h

  int main()

  {

  int arr[3][4]={ {1,2,3},{4,5 } };

  int I=0;

  for(I=0;i3;我)

  {

  int j=0;

  for(j=0;j 4;j)

  {

  printf(%d ,arr[I][j]);

  }

  printf( \ n );

  }

  返回0;

  }

  #包含stdio.h

  int main()

  {

  int arr[3][4]={ {1,2,3},{4,5 } };

  int I=0;

  for(I=0;i3;我)

  {

  int j=0;

  for(j=0;j 4;j)

  {

  printf( arr[%d][%d]=%p\n ,I,j,arr[I][j]);

  }

  }

  返回0;

  }

  我们可以看到不同行的地址仍然是连续的。

  (3)作为函数参数的数组。编写代码时,数组会作为参数传入函数。例如,我们想实现一个冒泡排序函数来排序一个整数数组。

  1.冒泡函数写错效率低。

  int bubble_sort(int arr[],int sz)

  {

  int I=0;

  for(I=0;I SZ-1;I )//n个元素需要排序n-1次

  {

  int j=0;

  for(j=0;j SZ-1-I;J )//对每个行程进行排序

  {

  if (arr[j] arr[j 1])

  {

  int tmp=arr[j];

  arr[j]=arr[j 1];

  arr[j 1]=tmp;

  }

  }

  }

  }

  int main()

  {

  int arr[]={ 9,8,7,6,5,4,3,2,1,0 };

  int I=0;

  int SZ=sizeof(arr)/sizeof(arr[0]);

  bubble_sort(arr,SZ);//相当于传arr[0]直接改主程序。

  for(I=0;我SZ;我)

  {

  printf(%d ,arr[I]);

  }

  返回0;

  }

  我们发现,不管数组是否已经排序,程序都会用完次数;

  正确书写

  #包含stdio.h

  int bubble_sort(int arr[],int sz)

  {

  int I=0;

  for(I=0;I SZ-1;I )//n个元素需要排序n-1次

  {

  int flag=1;

  int j=0;

  for(j=0;j SZ-1-I;J )//对每个行程进行排序

  {

  if (arr[j] arr[j 1])

  {

  int tmp=arr[j];

  arr[j]=arr[j 1];

  arr[j 1]=tmp;

  flag=0;

  }

  }

  If (flag==1)//优化

  打破;//break不用于选择,此时用于循环。

  }

  }

  int main()

  {

  int arr[]={ 9,8,7,6,5,4,3,2,1,0 };

  int I=0;

  int SZ=sizeof(arr)/sizeof(arr[0]);

  bubble_sort(arr,SZ);//这里arr传输第一个元素的地址。

  for(I=0;我SZ;我)

  {

  printf(%d ,arr[I]);

  }

  返回0;

  }2.数组名# includesdio.h

  int main()

  {

  int arr[10]={ 1,2,3,4,5,6 };

  printf(%p\n ,arr);

  printf(%p\n ,arr[0]);

  printf(%d\n ,* arr);

  返回0;

  }

  结论:数组名是第一个元素地址;

  两个例外:

  Sizeof(arr)此时计算的整个数组的大小。

  虽然arr结果是一样的,但它取的是整个数组的地址。

  arr加1后,可以发现arr给整个数组增加了更多的字节。

  (4)数组越界。数组下标有范围限制。如果超过这个限制,数组将被越界访问。这个时候编译器可能不会报错,但不代表程序是正确的。

  转载请联系作者授权,否则将追究法律责任。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • 详解c语言中的字符串数组是什么,详解c语言中的字符串数组结构,详解C语言中的字符串数组
  • 表达式求值c++实现,c语言实现表达式求值
  • 看懂c语言基本语法,C语言详解,C语言的基本语法详解
  • 用c语言实现快速排序算法,排序算法设计与实现快速排序C语言,C语言实现快速排序算法实例
  • 深入解析c语言中函数指针的定义与使用方法,深入解析c语言中函数指针的定义与使用情况,深入解析C语言中函数指针的定义与使用
  • 描述E-R图,E-R图举例,关于C语言中E-R图的详解
  • 折半查找法C语言,折半查找算法(算法设计题)
  • 折半查找法C语言,c语言折半法查找数据,C语言实现折半查找法(二分法)
  • 扫雷小游戏c++代码设计,c语言扫雷游戏源代码,C语言实现扫雷小游戏详细代码
  • 怎样统计程序代码行数,C语言统计行数,C#程序员统计自己的代码行数
  • 基于c语言的贪吃蛇游戏程序设计,用c语言编写贪吃蛇游戏程序,C语言实现简单的贪吃蛇游戏
  • 图的两种遍历算法,图的遍历算法代码c语言,Python算法之图的遍历
  • 留言与评论(共有 条评论)
       
    验证码: