STLG_01_08_程序设计C语言 - 数组

news2025/1/7 13:30:39

        数组是C语言中用于存储多个数据的容器,它们在内存中是连续的,可以通过索引访问其中的元素。数组对于C语言编程是非常重要的,因为它们是处理大量数据的基础。

1. 数组基础

1.1 数组定义与初始化
  • 定义数组:指定数据类型和数组名,后跟方括号中的元素个数。
    • 例如:int numbers[5];
  • 初始化数组:在定义时直接赋值。
    • 例如:int numbers[] = {1, 2, 3, 4, 5};
1.2 数组索引
  • C语言数组索引从0开始。
  • 例如:numbers[0] 是第一个元素。
1.3 数组大小
  • 数组大小在定义时确定,不能动态改变。
  • 例如:int numbers[5]; 数组大小为5。

2. 一维数组

2.1 访问元素
  • 使用索引访问数组元素。
  • 例如:numbers[2] 访问第三个元素。
2.2 遍历数组
  • 使用循环(如for循环)遍历数组。
  • 例如:
    for(int i = 0; i < 5; i++) {
        printf("%d\n", numbers[i]);
    }
    
2.3 数组作为函数参数
  • 可以将数组传递给函数。
  • 例如:
    void printArray(int arr[], int size) {
        for(int i = 0; i < size; i++) {
            printf("%d ", arr[i]);
        }
        printf("\n");
    }
    

3. 多维数组

3.1 二维数组
  • 二维数组可以看作是数组的数组。
  • 定义:int matrix[3][4];
  • 初始化:int matrix[3][4] = { {1,2,3,4}, {5,6,7,8}, {9,10,11,12} };
3.2 访问元素
  • 使用两个索引访问元素。
  • 例如:matrix[1][2] 访问第二行第三列的元素。
3.3 遍历二维数组
  • 使用嵌套循环遍历。
  • 例如:
    for(int i = 0; i < 3; i++) {
        for(int j = 0; j < 4; j++) {
            printf("%d ", matrix[i][j]);
        }
        printf("\n");
    }
    

4. 字符数组与字符串

4.1 字符数组
  • 字符数组用于存储字符序列。
  • 例如:char name[10];
4.2 字符串
  • C语言中的字符串是以空字符\0结尾的字符数组。
  • 例如:char str[] = "Hello";
4.3 字符串操作
  • 使用标准库函数如strlenstrcpystrcat等。
  • 例如:
    #include <string.h>
    char str1[] = "Hello";
    char str2[] = "World";
    strcat(str1, str2); // 结果为 "HelloWorld"
    

5. 动态数组与指针

5.1 指针与数组
  • 数组名本质上是一个指针,指向数组的第一个元素。
  • 例如:int *ptr = numbers;
5.2 动态分配数组
  • 使用mallocfree进行动态内存分配。
  • 例如:
    int *dynArr = (int*)malloc(5 * sizeof(int));
    if(dynArr != NULL) {
        // 使用动态数组
        free(dynArr);
    }
    

6. 示例与实践

6.1 示例代码
#include <stdio.h>
#include <string.h>

int main() {
    // 一维数组
    int numbers[5] = {1, 2, 3, 4, 5};
    for(int i = 0; i < 5; i++) {
        printf("%d ", numbers[i]);
    }
    printf("\n");

    // 二维数组
    int matrix[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("%d ", matrix[i][j]);
        }
        printf("\n");
    }

    // 字符数组与字符串
    char str[] = "Hello";
    printf("%s\n", str);
    strcat(str, " World");
    printf("%s\n", str);

    // 动态数组
    int *dynArr = (int*)malloc(5 * sizeof(int));
    if(dynArr != NULL) {
        for(int i = 0; i < 5; i++) {
            dynArr[i] = i * 10;
        }
        for(int i = 0; i < 5; i++) {
            printf("%d ", dynArr[i]);
        }
        printf("\n");
        free(dynArr);
    }

    return 0;
}

6. 常见问题与解答
  • 问题1:数组和指针有什么区别?
    • 解答:数组是一个连续的内存块,包含多个元素;指针是一个变量,存储内存地址。虽然数组名可以 decay 为指针,但它们是不同的概念。
  • 问题2:为什么字符串以\0结尾?
    • 解答:C语言中,字符串以\0结尾是为了标识字符串的结束,因为在内存中字符数组可能包含其他数据,\0用于明确字符串的边界。

7. 总结

        数组是C语言中处理数据的强大工具,掌握数组的定义、初始化、访问、遍历以及与指针的关系,对于开发高效、灵活的C程序至关重要。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2271735.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于单片机中药存放环境监测系统的实现

基于单片机中药存放环境监测系统的实现 项目开发背景 随着现代中药的广泛应用&#xff0c;中药材的存储环境对其质量有着至关重要的影响。温湿度、烟雾、火灾等环境因素&#xff0c;若不加以控制&#xff0c;将会导致中药材失效或变质。因此&#xff0c;设计一个基于单片机的…

casaos安装最新版homeassistant-arm

进入cosOS界面点自定义安装 Docker镜像:homeassistant/armv7-homeassistant Tag:2024.12.2 标题&#xff1a;Home Assistant 图片路径&#xff1a;https://cdn.jsdelivr.net/gh/IceWhaleTech/CasaOS-AppStoremain/Apps/HomeAssistant/icon.png Web UI&#xff1a;http&…

Fabric环境部署-安装Go

安装go语言环境 国内镜像&#xff1a;Go下载 - Go语言中文网 - Golang中文社区 1.选择版本下载后解压&#xff1a;注意go1.11.linux-amd64.tar.gz换成你下的 sudo tar zxvf go1.21.linux-amd64.tar.gz -C /usr/local 2.. 创建Go目录 mkdir $HOME/go 3. 用vi打开~./bashrc&…

慧集通(DataLinkX)iPaaS集成平台-主数据映射管理(多系统间基础档案的映射)

主数据管理 主数据管理主要是解决不同业务系统之间历史数据不统一的问题&#xff0c;在该功能下主要分为三个模块分别为数据对象、应用系统、数据映射&#xff1b; 其中数据对象指的是我们的不同的对象&#xff0c;如&#xff1a;部门、人员、职级、科目、供应商等等&#xff…

Hoverfly 任意文件读取漏洞(CVE-2024-45388)

漏洞简介 Hoverfly 是一个为开发人员和测试人员提供的轻量级服务虚拟化/API模拟/API模拟工具。其 /api/v2/simulation​ 的 POST 处理程序允许用户从用户指定的文件内容中创建新的模拟视图。然而&#xff0c;这一功能可能被攻击者利用来读取 Hoverfly 服务器上的任意文件。尽管…

基于单片机的公交车报站系统设计

引言&#xff1a;单片机应用实践是电类相关专业一门必修的专业技术基础课&#xff0c;其教学目的就是为了使学生能深入了解模拟电路、数字电路、EDA 技术、传感器、单片机原理及其相关接口的综合应用技术&#xff0c;为此我们选了一个典型的实践题目- 公交车报站系统设计&#…

基于Java的超级玛丽游戏的设计与实现【源码+文档+部署讲解】

目 录 1、绪论 1.1背景以及现状 1.2 Java语言的特点 1.3 系统运行环境及开发软件&#xff1a; 1.4 可行性的分析 1.4.1 技术可行性 1.4.2 经济可行性 1.4.3 操作可行性 2、 需求分析 2.1 用户需求分析 2.2功能需求分析 2.3界面设计需求分析…

关于数组的一些应用--------数组作函数的返回值(斐波那契数列数列的实现)

数组在作为函数的返回值&#xff0c;一个很经典的例子就是获取斐波那契数列的前N项 代码思路&#xff1a; 设计思路 输入&#xff1a; 输入一个整数 n&#xff0c;表示要生成斐波那契数列的长度。 输出&#xff1a; 输出一个长度为 n 的整数数组&#xff0c;其中每个元素为斐…

灰度图的Stride和RGB的Stride有什么区别呢?

灰度图&#xff08;Grayscale&#xff09;和RGB图像的步长&#xff08;Stride&#xff09;计算确实有所不同&#xff0c;主要是因为它们每个像素占用的字节数不同。以下是两者的区别及对齐要求&#xff1a; 灰度图&#xff08;Grayscale&#xff09; 每个像素占用的字节数&…

使用WebSocket 获取实时数据

回车发送数据&#xff0c;模拟服务器发送数据 效果图&#xff1a; 源码&#xff1a; <template><div><h1>WebSocket 实时数据</h1><input type"text" v-model"ipt" keyup.enter"sendMessage(ipt)"><div v-if…

Python:交互式物质三态知识讲解小工具

学着物理写着Python 以下是一个使用Python的Tkinter库实现的简单示例程序&#xff0c;通过图形界面展示并讲解固态、液态、气态的一些特点&#xff0c;代码中有详细的注释来帮助你理解各部分功能&#xff1a; 完整代码 import tkinter as tk from tkinter import ttk import …

基于64QAM的载波同步和定时同步性能仿真,包括Costas环和gardner环

目录 1.算法仿真效果 2.算法涉及理论知识概要 3.MATLAB核心程序 4.完整算法代码文件获得 1.算法仿真效果 matlab2022a仿真结果如下&#xff08;完整代码运行后无水印&#xff09;&#xff1a; 仿真操作步骤可参考程序配套的操作视频。 2.算法涉及理论知识概要 载波同步是…

Arduino 小白的 DIY 空气质量检测仪(5)- OLED显示模块、按钮模块

最终章 这一章把剩下的OLED显示模块、按钮模块分享一下&#xff0c;当前这个离线无存储的版本&#xff0c;基本告一段落。 如果后续能进化成&#x1f236;存储、联网版本&#xff0c;就再开一个小系列分享一下。 逐个分析 display.h #include <Arduino.h> #include &l…

基于机器视觉和Dijkstra算法的平面建筑群地图路线规划matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 1.程序功能描述 基于机器视觉和Dijkstra算法的平面建筑群地图路线规划matlab仿真&#xff0c;输入一张平面建筑群的地图&#xff0c;然后通过机器视觉识别地图里面的障碍物&#xff0c;然后通…

计算机的错误计算(二百零一)

摘要 用两个大模型计算 &#xff0c;结果保留 10位有效数字。实验表明&#xff0c;两个大模型的输出均只有1位正确数字&#xff1b;并它们几乎相同&#xff1a;仅最后1位数字不同。 例1. 计算 , 结果保留 10位有效数字。 下面是与一个数学解题器的对话。 以上为与一个数学解…

【Motion Builder】配置c++插件开发环境

目录 准备环境构建官方案例另行构建经验分享附录 准备环境 安装Motion Builder 2024并破解安装Qt 5.15.2 截止至2024年12月19日&#xff0c;Qt的在线安装器的默认页面是没有5.15.2版本的。你需要&#xff1a;在“选择组件”界面&#xff0c;选择“Archive”&#xff0c;点击“…

大学生入学审核系统的设计与实现(源码+数据库+文档)

亲测完美运行带论文&#xff1a;文末获取源码 文章目录 项目简介&#xff08;论文摘要&#xff09;运行视频包含的文件列表&#xff08;含论文&#xff09;后台运行截图 项目简介&#xff08;论文摘要&#xff09; 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理…

使用高云小蜜蜂GW1N-2实现MIPI到LVDS(DVP)转换案例分享

作者&#xff1a;Hello&#xff0c;Panda 大家晚上好&#xff0c;熊猫君又来了。 今天要分享的是一个简单的MIPI到LVDS&#xff08;DVP&#xff09;接口转换的案例。目的就是要把低成本FPGA的应用潜力充分利用起来。 一、应用背景 这个案例的应用背景是&#xff1a;现在还在…

单片机-独立按键矩阵按键实验

1、按键介绍 按键管脚两端距离长的表示默认是导通状态&#xff0c;距离短的默认是断开状态&#xff0c; 如果按键按下&#xff0c;初始导通状态变为断开&#xff0c;初始断开状态变为导通 我们开发板是采用软件消抖&#xff0c;一般来说一个简单的按键消抖就是先读取按键的状…

供应链系统设计-供应链中台系统设计(七)- 商品中心设计篇

概述 上篇文章我们大致讲了一些商品中心相关的概念&#xff0c;例如&#xff1a;SPU、SKU、Item等等&#xff0c;在这里我们来简单的回顾一下&#xff1a; 商品概念的分层与定义&#xff1a; SPU&#xff08;Standard Product Unit&#xff09;&#xff1a;代表产品系列或产品…