STLG_01_08_程序设计C语言 - 数组

        数组是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.rhkb.cn/news/501983.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IEEE PDF eXpress遇到Font TimesNewRomanPSMT is not embedded的解决方案

IEEE PDF eXpress遇到Font TimesNewRomanPSMT is not embedded的解决方案 问题描述 在IEEE PDF eXpress上上传论文后&#xff0c;出现Font XXX is not embedded的问题。 该问题是指你所插入的图片等&#xff0c;没有将对应的字体嵌入进去。 解决方案 以下以Origin Lab图片…

9.系统学习-卷积神经网络

9.系统学习-卷积神经网络 简介输入层卷积层感受野池化层全连接层代码实现 简介 卷积神经网络是一种用来处理局部和整体相关性的计算网络结构&#xff0c;被应用在图像识别、自然语言处理甚至是语音识别领域&#xff0c;因为图像数据具有显著的局部与整体关系&#xff0c;其在图…

ESP32-C3环境搭建

参考第二讲 ubuntu下的ESP-IDF开发环境搭建_哔哩哔哩_bilibili 宸芯IOT中的资料搭建 因为我买的板子是ESP32C3&#xff0c;所以没有完全按照教程去设置环境&#xff0c;但是也成功。 一、下载ubuntu系统以及esp-idf https://cn.ubuntu.com/download/server/step1 在以上链接…

解决npm报错:sill idealTree buildDeps

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 报错信息 使用 npm 安装依赖时报错&#xff1a;sill idealTree buildDeps 解决方案 请按照以下步骤进行相关操作&#xff1a; 1、删除 C:\Users{账户}\ 文件夹中的 .npm…

【NX入门篇】

NX入门篇 一、UG NX 由来二、软件如何启动&#xff08;UG NX 12.0&#xff09;三、使用步骤四、常用命令 一、UG NX 由来 UG NX由来&#xff1a; 1969 年&#xff1a;UG 的开发始于美国麦道航空公司&#xff0c;基于 C 语言开发实现&#xff1b;1976 年&#xff1a;UG问世&am…

如何在 VSCode 中配置 C++ 开发环境:详细教程

如何在 VSCode 中配置 C 开发环境&#xff1a;详细教程 在软件开发的过程中&#xff0c;选择一个合适的开发环境是非常重要的。Visual Studio Code&#xff08;VSCode&#xff09;作为一款轻量级的代码编辑器&#xff0c;凭借其强大的扩展性和灵活性&#xff0c;受到许多开发者…

超越YOLO11!DEIM:先进的实时DETR目标检测

DEIM: DETR with Improved Matching for Fast Convergence arXiv: https://arxiv.org/abs/2412.04234 Project webpage&#xff1a;https://www.shihuahuang.cn/DEIM/ GitHub&#xff1a;https://github.com/ShihuaHuang95/DEIM 1 背景&#xff1a;DETR目标检测框架 目标检…

《GICv3_Software_Overview_Official_Release_B》学习笔记

1.不同版本的 GIC 架构及其主要功能如下图所示&#xff1a; 2.GICv2m&#xff08;Generic Interrupt Controller Virtualization Model&#xff09;是针对ARM架构的GIC&#xff08;通用中断控制器&#xff09;的一种扩展&#xff0c; GICv2m扩展为虚拟化环境中的中断管理提供了…

PADS Logic原理图中有很多页原理图,如何(怎样)删除其中一页或者多页

我们在进行PADS Logic进行原理图设计的时候&#xff0c;有时候可能遇到一次性设计了很多页的原理图&#xff0c;比如说十几页的原理图。那么我们在进行PADS Layout的时候&#xff0c;可能将这些原理图绘制两块板或者多块PCB板&#xff0c;那么这时候我们需要将其中的一张原理图…

网络安全的学习与实践经验(附资料合集)

学习资源 在线学习平台&#xff1a; Hack This Site&#xff1a;提供从初学者到高级难度的挑战任务&#xff0c;适合练习各种网络安全技术。XCTF_OJ&#xff1a;由XCTF组委会开发的免费在线网络安全网站&#xff0c;提供丰富的培训材料和资源。SecurityTube&#xff1a;提供丰…

问题清除指南|关于num_classes与 BCELoss、BCEWithLogitsLoss 和 CrossEntropyLoss 的关系

前言&#xff1a;关于「 num_classes 1 」引发的探究。 2024年尾声&#xff0c;学弟问到一个问题&#xff1a;在研究工作 CNNDetection 的github开源代码 networks/trainer.py 文件的 line 27 self.model resnet50(num_classes1) 中&#xff0c;变量 num_classes 的值为1&…

CSS——1.优缺点

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><link rel"stylesheet" type"text/css" href"1-02.css"/></head><body><!--css&#xff1a;层叠样式表…

ETCD渗透利用指南

目录 未指定使用put操作报错 未指定操作版本使用get报错 首先etcd分为两个版本v2和v3&#xff0c;不同的API结果无论是访问URL还是使用etcdctl进行通信&#xff0c;都会导致问题&#xff0c;例如使用etcdctl和v3进行通信&#xff0c;如果没有实名ETCDCTL_API3指定API版本会直接…

开源数据集成平台白皮书重磅发布《Apache SeaTunnel 2024用户案例合集》!

2025年新年临近&#xff0c;Apache SeaTunnel 社区用户案例精选&#x1f4d8;也跟大家见面啦&#xff01;在过去的时间里&#xff0c;SeaTunnel 社区持续成长&#xff0c;吸引了众多开发者的关注与支持。 为了致谢一路同行的伙伴&#xff0c;也为了激励更多人加入技术共创&…

【RTD MCAL 篇3】 K312 MCU时钟系统配置

【RTD MCAL 篇3】 K312 MCU时钟系统配置 一&#xff0c;文档简介二&#xff0c; 时钟系统理论与配置2.1 K312 时钟系统2.1.1 PLL2.1.2 MUX_0系统2.1.3 MUX_6 时钟输出2.1.4 option B推荐方案 2.2 EB 配置2.2.1 General 配置2.2.2 McuClockSettingConfig配置2.2.2.1 McuFIRC配置…

vite-plugin-imagemin安装问题

vite-plugin-imagemin 是一款图片资源压缩插件,能够在打包的时候显著的降低图片资源占用。不过,在安装过程中我们遇到了如下的问题。 对于上面的问题,有以下几种常见的解决方案: 1,使用 yarn 在 package.json 内配置(推荐) 打开 package.json 配置文件,然后添加如下脚本…

c-动态内存管理 (动态内存管理比较深入的分析和理解博客总结)

本节博客主要是堆C语言动态内存管理进行一定深度的谈论, 主要谈论主题请见目录~ 目录 1. 复习 与 铺垫(动态内存管理基本知识)1.1 什么是动态内存管理(基本代码)?1.2 为什么要有动态内存管理?1.3 什么是野指针? 2. C程序地址空间分布2.1 两者的空间是如上图所示的吗? 我们验…

【JVM】总结篇-运行时内存篇

文章目录 JVM内存模型&#xff08;内存结构&#xff09;程序计数器 pc虚拟机栈本地方法栈 native堆堆空间堆中一些JVM参数堆中垃圾回收过程MinorGC MajorGC FullGC年轻代GC(Minor GC)触发机制&#xff1a;老年代GC&#xff08;Major GC/Full GC&#xff09;触发机制&#xff1a…

Tableau数据可视化与仪表盘搭建-安装教程

下载 tableau.com/zh-cn/support/releases 滚动到最下方的下载 在下载的同时 我们点击登录&#xff0c;去注册一个tableau的账号 下面点击我们下载好的tableau安装程序 不要自定义安装&#xff0c;会有路径问题 点击试用14天 点击激活 激活学生 tableau.com/zh-cn/academic…

GitHub的简单操作

引言 今天开始就要开始做项目了&#xff0c;上午是要把git搭好。搭的过程中遇到好多好多的问题。下面就说一下git的简单操作流程。我们是使用的GitHub,下面也就以这个为例了 一、GitHub账号的登录注册 https://github.com/ 通过这个网址可以来到GitHub首页 点击中间绿色的S…