返回

数组

发布时间:2023-08-17 21:07:54 316

1.一维数组的创建和初始化

一维数组在内存中是连续存放的

数组的创建:数组是一组相同类型元素的集合。数组的创建方式:

type_t    arr_name    [const_n];

type_t  是指数组的元素类型

const_n  是一个常量表达式,用来指 定数组的大小、

数组的初始化: int arr1[10]={1,2,3}; 不完全初始化,剩下的默认为0

                            char arr2[10]={"abc"};存储的时候是,a,b,c,\0,剩下的默认为0

                            char  arr3[10]={'a','b','c'};存储的时候,是'a','b','c',剩下的为0

sizeof和strlen 的区别:

sizeof是计算变量,数组,类型所占空间的大小,单位是字节,也包括\0——它是一个操作符

strlen 是只能字符串求长度—‘\0’之前的字符个数,不包括‘\0’。——它是库函数,得引头文件

2.二维数组

二维数组在内存中的存储是连续的

数组_数组名

二维数组的初始化:

int arr[3][4]={1,2,3,4,5};//创建的数组是3行4列,这样初始化的话,第一行是1,2,3,4第二行是5,0,0,0,第三行是0,0,0,0。

int arr[3][4]={{1,2,3},{4,5}};//创建的数组是3行4列,这样初始化的话,第一行是1,2,3,0第二行是4,5,0,0,第三行是0,0,0,0

二维数组初始化的时候可以省略行但是不能省略列

如:正确的初始化方式:int arr[][4]={{1,2,3},{4,5}}

         错误的初始化方式:int arr[][]={{1,2,3},{4,5}};

行与列的下标都是从0开始的

3.数组的应用——冒泡排序

冒泡排序就是把一行乱序的数字,把第一个数字与其他数字两两比较,知道与最后一个比较结束。然后再用第二个数字依次和除第一个数字以外的数字相比较大小排序。

#define _CRT_SECURE_NO_WARNINGS

#include

#include

void bubble_line(int arr[],int sz)

{

       int i = 0;

       for (i = 1; i < sz; i++)

       {

              int flag = 1;//此处设置一个标志,当一个数组中的顺序本来就是顺序,或者在中途已经拍好顺序的时候,后续的比较就不必进行

              int j = 0;

              for (j = 0; j < sz - i; j++)

              {

                      int temp = 0;

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

                      {

                             temp = arr[j];

                             arr[j] = arr[j + 1];

                             arr[j + 1] = temp;

                             flag = 0;

                      }

              }

              if (flag ==1)

              {

                      break;

              }

       }

}

int main()

{

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

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

       int i = 0;

    bubble_line(arr,sz);

       for (i = 0; i < 10; i++)

       {

              printf("%d  ", arr[i]);

       }

       return 0;

}

4.数组名就是首元素的地址

int main()

   

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

    printf("%p\n",arr);

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

    printf("%p\n",&arr);

    return 0;

}

最后得出的结果是一样的,但是前两个取出的是数组中首位元素的地址,第三个表示的是取出的是整个数组的地址的首地址,是一个范围的起始地址。

结论:数组名是数组首元素的地址(有两个例外)

1.sizeof(数组名),计算整个数组的大小,单位是字节,sizeof内部单独放一个数组名,数组名表示整个数组。

2.&数组名,取出的是数组的地址。&数组名,取出的是整个数组的地址。

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
数组循环右移2.0 2023-08-17 18:10:14