C 数组

当我们需要存储一组相同类型的数据时,C语言中的数组就是一个非常好的选择。数组可以存储基本类型、结构体、指针等数据类型。本文将详细介绍 C 数组的定义、初始化、访问和常用操作。

定义和初始化数组

C语言中定义一个数组有三个关键字:类型、数组名和数组大小。通常,数组定义的格式如下:

type arrayName [ arraySize ];

其中,type表示数组元素的类型,arrayName代表数组的名称,arraySize是可选项,表示数组的大小。

定义数组后,我们需要为其分配内存空间,即初始化数组。我们可以在定义数组时,初始化数组的值。分为显式数组初始化和隐式数组初始化。

显式数组初始化

显式初始化是指在定义数组时,直接为其成员赋值,例如:

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

以上代码定义了一个大小为5的整型数组,并初始化为1,2,3,4, 5。

隐式数组初始化

隐式初始化是指在定义数组时,不对其进行显式赋值,例如:

int nums[5];

此时数组成员的值并没有确定,可以通过循环等方式为其赋值,例如:

for (int i = 0; i < 5; i++) {
    nums[i] = i + 1;
}

访问和操作数组

访问数组元素

我们可以使用下标操作符 [] 来访问数组的元素。数组下标是从0开始的,例如:

int nums[3] = {1, 2, 3};
int firstNum = nums[0];  // 访问第一个元素,值为1

数组元素遍历

遍历整个数组,可以使用for循环,例如:

int nums[3] = {1, 2, 3};
for (int i = 0; i < sizeof(nums) / sizeof(int); i++) {
    printf("%d", nums[i]);
}

输出结果为:123

获取数组长度

为了方便操作,我们需要知道数组的长度。在C语言中,可以使用以下方法获得数组的长度:

int nums[3] = {1, 2, 3};
int len = sizeof(nums) / sizeof(int);
printf("%d", len);

输出结果为:3

多维数组

除了一位数组,C语言还支持多维数组(二维、三维、n维等)。多维数组在内存中存储是连续的,例如:

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

我们可以使用两个for循环来遍历整个多维数组,例如:

for (int i = 0; i < 2; i++) {
    for (int j = 0; j < 3; j++) {
        printf("%d", nums[i][j]);
    }
}

输出结果为:123456

实例

下面是两个实例演示了 C 数组的使用。

实例1:计算数组中的元素之和

#include <stdio.h>

int main() {
    int nums[5] = {1, 2, 3, 4, 5};
    int sum = 0;
    for (int i = 0; i < sizeof(nums) / sizeof(int); i++) {
        sum += nums[i];
    }
    printf("数组元素之和为:%d", sum);
    return 0;
}

输出结果为:数组元素之和为:15

实例2:矩阵转置

#include <stdio.h>
#define MATRIX_SIZE 3

void transpose(int matrix[MATRIX_SIZE][MATRIX_SIZE]) {
    for (int i = 0; i < MATRIX_SIZE; i++) {
        for (int j = i + 1; j < MATRIX_SIZE; j++) {
            int temp = matrix[i][j];
            matrix[i][j] = matrix[j][i];
            matrix[j][i] = temp;
        }
    }
}

void printMatrix(int matrix[MATRIX_SIZE][MATRIX_SIZE]) {
    for (int i = 0; i < MATRIX_SIZE; i++) {
        for (int j = 0; j < MATRIX_SIZE; j++) {
            printf("%d ", matrix[i][j]);
        }
        printf("\n");
    }
}

int main() {
    int matrix[MATRIX_SIZE][MATRIX_SIZE] = {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9},
    };
    printf("原矩阵:\n");
    printMatrix(matrix);
    transpose(matrix);
    printf("转置后的矩阵:\n");
    printMatrix(matrix);
    return 0;
}

输出结果为:

原矩阵:

1 2 3 
4 5 6 
7 8 9 

转置后的矩阵:

1 4 7 
2 5 8 
3 6 9 

以上就是 C 数组的使用攻略,希望对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C 数组 - Python技术站

(0)
上一篇 2023年5月10日
下一篇 2023年5月10日

相关文章

  • c语言中getch,getche,getchar的区别

    当你在使用 C 语言编写控制台程序时,可能会使用到三个常用的函数:getch、getche和getchar。它们都可以用于从控制台读取用户输入的字符,但是它们的行为有些不同。 1. getch getch函数通常被用于读取单个字符,但是它是一个非标准的函数,不是ANSI C标准的一部分。因此,它的行为可能因操作系统/编译器而异。简单来说,它可以从键盘上读取一…

    C 2023年5月30日
    00
  • C语言实现超市管理系统

    C语言实现超市管理系统攻略 1. 需求分析 实现一个超市管理系统,主要需要实现以下功能: 商品信息的录入、修改、删除和查询; 商品购买功能,应该可以添加购买的商品、删除购买的商品、显示购买的商品列表并计算总价; 输出商品销售报告。 2. 设计思路 在分析需求后,可以设计以下几个数据结构: 商品结构体:存储商品信息,包括商品名称、生产日期、保质期、价格、库存等…

    C 2023年5月23日
    00
  • Turbo C 2.0集成环境的使用教程

    Turbo C 2.0集成环境的使用教程 Turbo C 2.0是一个古老的C语言编程环境,由Borland公司开发。虽然它已经停止支持并淘汰多年,但是它仍然是一些编程者心中的经典。本教程将带您了解Turbo C 2.0的基本用法和一些代码示例。 安装Turbo C 2.0 首先我们需要安装Turbo C 2.0,您可以从网上下载Turbo C 2.0的安装…

    C 2023年5月23日
    00
  • Windows OpenGL ES 图像 GPUImageLookupFilter

    零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录  >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录  >> OpenGL ES 特效 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录  >> OpenGL ES …

    C语言 2023年4月18日
    00
  • 基于C语言中段错误的问题详解

    基于C语言中段错误的问题详解 什么是段错误 在使用C语言开发时,经常会出现段错误(Segmentation Fault)的问题。所谓段错误,是指程序在访问某个内存地址时,访问了不该访问的内存,或者访问了系统保护的内存区域,导致程序崩溃。通常这种错误会导致程序退出,并输出类似于“Segmentation Fault”、“core dumped”或者“Bus E…

    C 2023年5月23日
    00
  • C++类型转换详解

    C++类型转换详解 强制类型转换 强制类型转换可以将一个变量从一种类型转换为另一种类型,例如将浮点数转换为整数,将整数转换为字符等。 static_cast static_cast用于静态类型转换,主要用于不同类型之间的转换。 示例: double d = 3.14; int i = static_cast<int>(d); 这里我们将doubl…

    C 2023年5月23日
    00
  • C++实现统计代码运行时间的示例详解

    C++实现统计代码运行时间的示例详解 什么是代码运行时间 代码运行时间指的是从程序开始执行到程序结束运行所需要的时间。在程序开发中,我们通常会关注代码的运行时间,以确定程序的性能和优化方向。 如何统计代码运行时间 一般情况下,我们可以使用系统提供的时间函数来统计代码的运行时间。在 C++ 中,常用的时间函数有 clock 和 chrono。 使用 clock…

    C 2023年5月24日
    00
  • 当前标识没有对”Temporary ASP.NET Files”的写访问权限的解决办法

    如果您在使用ASP.NET应用程序时遇到了如下错误: Could not load file or assembly ‘WebApplication1’ or one of its dependencies. The system cannot find the file specified. Description: An unhandled except…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部