• C学习笔记-数组


    数组的概念

    数组是一组具有相同数据类型的变量集合,这里要注意两点,数组只能存储相同的数据类型和数组的内存是连续的,这位数组和指针的联系奠定了基础。

    一维数组

    定义及初始化

    一维数组指的是只有一个下标的数组,它用来表示一组具有相同类型的数据
    其格式为

    类型说明符  数组名[常量表达式];
    

    e.g.

    int arr[3];
    

    上式表达的是定义了一个一维数组,其数据类型是int,arr是数组名称,3表示的是数组长度。其包含的为arr[0]arr[1]arr[2],没有arr[3],使用arr[3]会造成数组越界错误
    数组的初始化有三种方式:

    • 直接对数组按位数初始化
    int arr[3] = {1, 2, 3};
    
    • 初始化部分元素,此时剩余元素默认设置为0
    int arr[3] = {1, 2};
    
    • 不指定数组长度,此时长度会自动按照元素个数赋值
    int arr[] = {1, 2, 3};
    

    一维数组的使用

    要使用数组元素,就需要使用符合数组使用规则的使用方式,数组使用格式如下:

    数组名[下标]
    

    注:在数组中,下标是以0开始的

    • 一维数组的遍历
      数组中的一个常见操作就是对数组进行遍历
    int arr[3] = { 1, 2, 3};
    int i = 0;
    for (i = 0; i < 3; i++)
    {
    	printf("arr[%d] = %d
    ", i, arr[i]);
    }
    
    • 获取一维数组的最值
      最值得获取也是一维数组的常见操作
      假设第一个值是最大值,然后依次和后面的值对比,通过不断替换从而得到最大值
    int arr[5] = {1, 6, 7, 2, 5};
    int max = arrx[0];
    int i = 0;
    for (i = 1; i < 5; i++)
    {
    	if (arr[i] > max)
    	{
    		max = x[i];
    	}
    }
    printf("max = %d
    ", max);
    
    • 一维数组的排序
      一维数组有一个很重要的应用就是排序,排序中有两个排序比较重要,面试什么的最喜欢的。一个是冒泡排序,一个是选择排序。
      • 冒泡排序原理
        冒泡排序原理GIF
      1. 从第一个元素开始,将相邻的两个元素依次进行比较,直到最后两个元素完成比较。如果前一个元素比后一个元素大,则交换它们的位置。整个过程完成后,数组中最后一个元素自然就是最大值,这样也就完成了第一轮的比较。
      2. 除了最后一个元素,将剩余的元素继续进行两两比较,过程与第一步相似,这样就可以将数组中第二大的数放在倒数第二个位置。
      3. 依次类推,持续对越来越少的元素重复上面的步骤,直到没有任何一对元素需要比较为止
    int x[5] = { 9, 8, 3, 5, 2 };
    int m = 0, n = 0;
    int temp = 0;
    int i = 0;
    printf("冒泡排序前:
    ");
    for (i = 0; i < 5; i++)
    {
        printf("%d	", x[i]);
    }
    printf("
    ");
    for (m = 0; m < 5 - 1; m++)
    {
        for (n = 0; n < 5 - 1 - m; n++)
        {
            if (x[n] > x[n + 1])
            {
                temp = x[n];
                x[n] = x[n + 1];
                x[n + 1] = temp;
            }
        }
    }
    printf("冒泡排序后:
    ");
    for (i = 0; i < 5; i++)
    {
        printf("%d	", x[i]);
    }
    printf("
    ");
    

    二维数组

    定义及初始化

    二维数组可以看作一维数组的每个元素又是一个一维数组,其格式为:

    类型说明符 数组名[常量表达式1][常量表达式2];
    

    e.g.:

    int arr[2][3];
    

    二维数组的初始化:

    • 按行赋值
    int arr[2][3] = {{1, 2 ,3}, {4, 5, 6}};
    
    • 综合赋值
    int arr[2][3] = {1, 2, 3, 4, 5, 6};
    
    • 部分赋值
    int arr[2][3] = {{1},{1, 2, 3}};
    

    注:对数组赋值时,二维数组的第一个下标可以省略,而第二个下标不可省略!
    arr <=> *arr <=> &arr <=> &arr[0][0] <=> array[0]
    在二维数组中。arr[0]代表的是一个数组名,是一个右值。
    arr + 1arr[0] + 1代表的意义不同

    二维数组的使用

    二维数组的使用规则与一维数组类似,其格式为

    数组名[下标][下标];
    
    • 二维数组的遍历
    int arr[3][4] = { {1,2,3,4 }, {5,6,7,8}, {9,10,11,12} };
    for (int i = 0; i < 3; i++) //循环遍历行
    {
    	for (int j = 0; j < 4; j++) //循环遍历列
    	{
    		printf("arr[%d][%d] = %d 	", i, j, arr[i][j]);
    	}
    	printf("
    ");//每一行的末尾添加换行符
    }
    
  • 相关阅读:
    方维P2P  二次开发
    Array 数组去重 总结10方法(7)
    PHP  OOP学习总结
    [转载]js:数组里面获取键名和键值
    Array对象的方法实现(6)----Array.prototype.indexOf(实现常规参数的功能)
    在Apache服务器上启用GZip压缩静态内容的方法
    PHP 程序授权验证开发思路
    【转】zend studio中ctrl+鼠标左键无法转到类或函数定义文件的解决方法
    公钥私钥,HTTPS,CA证书机构,单向和双向认证
    Array对象的方法实现(5)----Array.prototype.includes(实现常规参数的功能)
  • 原文地址:https://www.cnblogs.com/cj5785/p/10664806.html
Copyright © 2020-2023  润新知