C语言数组的各种操作梳理

C语言数组的各种操作梳理

1. 定义数组

定义数组需要指定数组的类型、名称和元素个数,语法如下:

type arrayName[arraySize];

示例1:定义一个长度为10的整型数组

int numbers[10];

示例2:定义一个长度为5的double类型数组

double scores[5];

2. 数组初始化

数组初始化可以在定义时进行,通过一对花括号来指定数组的初始值,或者在数组定义之后通过循环等方式来进行。

语法1:在定义数组时进行初始化

type arrayName[arraySize] = {element0, element1, ..., elementN};

例如:

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

语法2:定义数组之后在代码中进行初始化

使用for循环来初始化数组:

for (int i=0; i<arraySize; i++) {
    arrayName[i] = someValue;
}

例如:

double scores[5];
for (int i=0; i<5; i++) {
    scores[i] = (double)i * 2.5;
}

3. 读写数组元素

通过数组下标来读写数组元素,数组下标从0开始。

arrayName[index]

例如,读取numbers数组中的第3个元素:

int third = numbers[2];

将numbers数组中的第4个元素赋值为10:

numbers[3] = 10;

4. 数组的长度

数组的长度可以通过sizeof操作符来获取,即数组占用空间大小除以类型大小等于数组长度。

sizeof(arrayName) / sizeof(type)

例如,获取numbers数组的长度:

int length = sizeof(numbers) / sizeof(int);

5. 数组遍历

可以使用for循环来遍历数组,读取或更新数组中的所有元素。

for (int i=0; i<arraySize; i++) {
    // do something with arrayName[i]
}

例如,打印scores数组中的所有元素:

for (int i=0; i<5; i++) {
    printf("scores[%d] = %f\n", i, scores[i]);
}

6. 二维数组

定义二维数组需要指定数组类型、名称、行数和列数,语法如下:

type arrayName[rowSize][colSize];

示例:

int matrix[3][3];

二维数组的操作和一维数组类似,需要指定两个下标来访问数组元素。

7. 指针与数组

可以使用指针来访问数组元素,指针变量初始化为数组名,然后通过指针变量加上偏移量来访问数组元素。

*(arrayName + index)

例如,使用指针p来访问numbers数组中的第3个元素:

int* p = numbers; // p指向numbers数组的第0个元素
int third = *(p + 2);

8. 动态分配数组内存

可以使用malloc函数来动态分配数组内存,需要指定要分配的字节数,然后将void指针强制转换为数组指针类型即可。

语法:

type* arrayName = malloc(size*sizeof(type));

示例:

int* nums = malloc(5*sizeof(int));

9. 数组作为函数参数

数组可以作为函数参数传递,可以通过引用传递来修改数组元素。

语法:

void functionName(type arrayName[], int arraySize) {
    // do something with arrayName
}

示例:

void printIntArray(int nums[], int length) {
    for (int i=0; i<length; i++) {
        printf("%d ", nums[i]);
    }
    printf("\n");
}

调用:

int numbers[5] = {1, 2, 3, 4, 5};
printIntArray(numbers, 5);

输出:

1 2 3 4 5

10. 数组排序算法

常见的数组排序算法有冒泡排序、选择排序、插入排序、快速排序等。这里以快速排序为例,给出代码实现。

void quickSort(int arr[], int left, int right) {
    if (left < right) {
        int pivot = arr[left];
        int i = left, j = right;
        while (i < j) {
            while (arr[j] > pivot && j > i) {
                j--;
            }
            while (arr[i] < pivot && i < j) {
                i++;
            }
            if (i < j) {
                int temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
        arr[left] = arr[i];
        arr[i] = pivot;
        quickSort(arr, left, i-1);
        quickSort(arr, i+1, right);
    }
}

示例:

int numbers[10] = {8, 5, 7, 6, 2, 3, 9, 1, 4, 0};
int length = sizeof(numbers) / sizeof(int);
quickSort(numbers, 0, length-1);
printIntArray(numbers, length);

输出:

0 1 2 3 4 5 6 7 8 9

以上就是C语言数组的各种操作,包括定义数组、数组初始化、读写数组元素、数组长度、数组遍历、二维数组、指针与数组、动态分配数组内存、数组作为函数参数以及数组排序算法等。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言数组的各种操作梳理 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • Python获取抖音关注列表封号账号的实现代码

    获取抖音关注列表和封号账号信息的实现代码需要以下步骤: 步骤一:安装必要的Python库 在Python中获取抖音用户的信息和数据需要使用requests和json库。安装这些库: pip install requests 步骤二:获取抖音用户的数据 使用requests库发送请求到抖音的接口获取用户的数据。抖音用户数据获取方式包括通过用户ID获取或通过用户…

    other 2023年6月27日
    00
  • p2p通信原理及实现

    P2P通信原理及实现 什么是P2P通信? P2P(点对点)通信是一种不需要专门的中心服务器就可以进行互联的通信方式,每个用户都可以在需要的时候直接与其他用户进行数据交换。P2P在许多网络应用中都得到了广泛的应用,例如P2P文件共享、P2P语音、视频通话等。 P2P通信的原理 在P2P通信中,每个节点都充当着同时作为客户端和服务器端的角色。当其中一个节点需要与…

    其他 2023年3月29日
    00
  • JS 插件dropload下拉刷新、上拉加载使用小结

    JavaScript 插件 dropload 的使用小结 简介 dropload 是一个帮助实现下拉刷新和上拉加载的 JavaScript 插件,简单易用,并提供了多种自定义配置和回调函数来满足不同需求场景的使用。在下面的介绍中,我们将详细讲解如何使用和配置 dropload。 安装 你可以从 GitHub 或者 npm 上找到 dropload,然后按照相…

    other 2023年6月25日
    00
  • utf8转unicode在线转换

    当然,我可以为您提供有关“Windows grep命令”的完整攻略,以下是详细说明: 什么是Windows grep命令? Windows grep命令是一种文本搜索工具,用于在文件中查找指定的字符串或模式。它可以在Windows命令提示符下使用,也可以在PowerShell中使用。 Windows grep命令的使用攻略 以下是Windows grep命令…

    other 2023年5月7日
    00
  • MAGIX Sound Forge Pro 12 Suite破解版安装教程+补丁激活图文详解(附下载)

    很抱歉,我无法提供关于软件破解的指导或支持。这种行为违反了软件的使用许可协议,并且可能涉及非法活动。我鼓励您遵守法律和道德准则,购买正版软件并按照它们的官方安装指南进行操作。如果您有任何其他问题或需要其他帮助,请随时告诉我。

    other 2023年9月6日
    00
  • dat文件用什么软件打开

    打开.dat文件需要以下两个步骤: 确定.dat文件的类型 选择使用合适的应用程序打开它 下面,我将详细讲解每个步骤。 第一步:确定.dat文件类型 .dat文件没有严格的文件类型,因此需要确定文件类型才能选择正确的应用程序打开它。 以下是一些常见的.dat文件类型: 数据库文件,例如Winmail.dat、Chrome Cookie文件等 游戏数据文件,例…

    其他 2023年4月16日
    00
  • vue 使用vant插件做tabs切换和无限加载功能的实现

    下面是详细讲解“Vue 使用 Vant 插件做 Tabs 切换和无限加载功能的实现”的完整攻略。 1. 安装 Vant 插件 要使用 Vant 插件,我们首先需要在我们的项目中安装它。可以通过命令行来安装: npm i vant -S 安装完成之后,我们可以在项目的 main.js 文件中引入 Vant: import Vant from ‘vant’; i…

    other 2023年6月25日
    00
  • html5的canvas绘制线条 moveto和lineto详解

    HTML5的Canvas绘制线条:moveto和lineto详解 Canvas是HTML5中的一个很重要的标签,可以在其中通过JavaScript脚本绘制各种图形和动画效果,而绘制线条是Canvas中常见的操作之一。本文将介绍如何使用moveto和lineto两个命令在Canvas中绘制线条。 moveto命令 moveto命令用于将画笔移动到指定的坐标点,…

    其他 2023年3月28日
    00
合作推广
合作推广
分享本页
返回顶部