C语言基础篇2:数组

news2024/11/29 16:42:07

1 一维数组

        数组是一个由若干同类型变量组成的集合,引用这些变量可以使用同一个名字。数组均由连续的存储单元组成,最低地址对应于数组的第一个元素,最高地址对应数组的最后一个元素。

1.1 一维数组的定义和引用

        一维数组示意图如下:

               

1 一维数组的定义

        一维数组是用来存储一维数列中数据的集合,声明格式:

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

        (1)类型说明符表示数组中的所有元素类型。

        (2)数组标识符表示该数组类型变量的名称,命名规则与变量名一致。

        (3)常量表达式定义了数组中存放的数据元素的个数,即数组长度。如a[8],表示a数组中有8个元素,下标从0开始,到7结束。

2 一维数组的引用

        数组定义后就要使用该数组,可以通过引用数组元素的方式使用该数组中的元素。数组元素表示的一般形式:数组标识符[下标]。

说明:下标可以是整型常量或整型表达式。

1.2 一维数组的初始化

        对一维数组的初始化可以有以下几种方式实现。

        (1)在数组定义的时候直接对数组元素初始化,例如:

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

        该方法是将数组中的元素值依次放在一对大括号中。

        (2)只给一部分元素赋值,未赋值的部分元素值为0。例如:

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

        数组中包含5个元素,不过在初始化时只给了3个值,于是数组中前三个元素的值对应括号中给出的值,在数组中没有得到值的元素被默认赋值为0.

        (3)在对全部数组赋初值时可以不指定数组长度。例如:

int iArray[] = {1,2,3};

        这行代码右侧有3个元素,系统就会根据给定的初始化元素值的个数来定义数组的长度,因此该数组的长度为3。

2 二维数组

        在C语言中,把下标是两个的数组称为二维数组,如iArray[m][n],表示第m行第n列。例如,一家宾馆的房间号索引图如下,利用二维数组可以准确的找到某个房间。

2.1 二维数组的定义和引用

        二维数组在实质上是一维数组的数组,二维数组的第一维度就是数据的行,第二维度是数据的列,根据行和列就能确定某个值。

1 二维数组的定义

        二维数组的声明与一维数组的声明相同,格式如下:

数据类型 数组名[常量表达式1][常量表达式2];

        其中“常量表达式1”被称为行下标,“常量表达式2”被称为列下标。如定义二维数组array[m][n],则二维数组的下标取值范围如下:

1 行下标的取值范围是0~m-1.

2 列下标的取值范围是0~n-1

3 二维数组的最大下标元素时array[m-1][n-1]。

2 二维数组的引用

        二维数组元素引用的格式为:数组名[下标][下标];

2.2 二维数组的初始化

        二维数组和一维数组一样,也可以在声明时对其进行初始化,如      

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

        定义了一个两行三列的二维数组。再给数组初始化时,有以下4中情况。

        (1)可以将所有数据写在一对大括号内,按照数组元素排列顺序对元素赋值。例如:

int iArray[3][3] = {1,2,3,4,5,6,7,8,9};

        如果大括号内的数据个数少于数组元素的个数,则系统将默认后面未被赋值的元素的值为0.

        (2)在为所有元素赋初值时,可以省略行下标,但是不能省略列下标,如:

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

        (3)可以分行给数组元素赋值,如:

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

        (4)二维数组也可以直接对数组元素赋值,如:

int c[1][2];
c[0][0] = 1;
c[0][1] = 2;

3 字符数组

3.1 字符数组的定义和引用

        在C语言中,没有专门的字符串变量,没有String类型,通常使用一个字符数组来存放一个字符串。字符数组实际上是一系列的字符集合,如果不严谨的说就相当于字符串。

        1 字符数组的定义

        字符数组的定义与其他数据类型的数组定义类似,格式为:

        char 数组标识符 [常量表达式];

        因为要定义的是字符型数组,所有在数组标识符前所用的类型是char,后面括号中的常量表达式代表数组元素的数量。

        2 字符数组的引用

        字符数组的引用与其他数据类型的数组引用一样,也使用下标的形式。例如:

#include <stdio.h>
int main(){
    char c1[5];
    c1[0] = 'h';
    c1[1] = 'e';
    c1[2] = 'l';
    c1[3] = 'l';
    c1[4] = 'o';
    
}

3.2 字符数组初始化

        再对字符数组进行初始化操作时,有以下几种方式。

        (1)逐个字符赋给数组中的元素。例如:

char c2[5] = {'h','e','l','l','o'};

        (2)如果在定义字符数组时进行初始化,则可以省略数组长度。例如:

char c3[] = {'h','e','l','l','o'};

        (3)利用字符串给字符数组初始化

        通常用一个字符数组来存放一个字符串。例如,用字符串的方式对数组进行初始化赋值,例如:

char c4[] = {"hello"};

        或者把"{}"去掉,也可以,如下:

char c5[] = "hello";

3.3 字符数组的输入和输出

        字符数组的输入和输出有两种方法。

        (1)使用格式符"%c",进行输入或输出。

        使用格式符"%c"实现字符数组中字符的逐个输入或输出。例如,循环字符数组中的元素,代码如下:

#include <stdio.h>
int main(){
    char c1[5];
    c1[0] = 'h';
    c1[1] = 'e';
    c1[2] = 'l';
    c1[3] = 'l';
    c1[4] = 'o';
    for (int i = 0; i < 5; ++i) {
        printf("%c",c1[i]);
    }

}

(2)使用格式符"%s"进行输入或输出

      

char c2[6] = {'h','e','l','l','o','w'};
printf("%s",c2);

         

4 常用的字符串处理函数

4.1 字符串复制

        在C语言中,strcpy()函数的作用是复制特定长度的字符串到另一个字符串中。语法格式如下:

strcpy(目的字符数组名,源字符数组名)

说明:1、目的字符数组应该有足够的长度,否则不能全部装入复制的字符串。

           2、目的字符数组名必须写成数组名形式,而 原字符数组名可以是字符数组名,也可以是一个字符串常量,这时相当于把一个字符串赋给一个字符数组。

          3、不能用赋值语句将一个字符串常量或字符数组直接赋给一个字符数组。

  例如:

#include <stdio.h>
#include <string.h>
    int main(){
        char c1[15] = "hello";
        printf("%s\n",c1);
        strcpy(c1,"world");
        printf("%s\n",c1);
        return 0;
    }

4.2 字符串连接

        字符串连接就是将一个字符串连接到另一个字符串的末尾,使其组合成一个新的字符串。在字符串处理函数中,strcat()函数就具有字符串连接的功能。其语法格式:strcat(目标,源)

        功能:把源字符数组中的字符串连接到目标字符数组中的字符串后面,并删除目的字符数组中原油的字符串结束标志"\0"。例如:

#include <stdio.h>
#include <string.h>
    int main(){
        char c1[15] = "hello";
        printf("%s\n",c1);
        strcat(c1,"world");
        printf("%s\n",c1);
        return 0;
    }

 

4.3 字符串比较

        字符串比较就是将一个字符串与另一个字符串从首字母开始,按照ASCII码的顺序逐个进行比较。使用strcmp()函数来完成字符串的比较。语法格式:strcmp(字符数组1,字符数组2)

        返回值如下:

        1、当字符串1 = 字符串2,返回0.

        2、字符串1 > 字符串2,返回正数。

        3、字符串1 < 字符串2,返回负数。

例如:

#include <stdio.h>
#include <string.h>
    int main(){
        char c1[] = "hello";
        char c2[] = "world";
        int result = strcmp(c1,c2);
        if(result  == 0){
            printf("c1 = c2");
        }else if(result > 0){
            printf("c1 > c2");

        }else{
            printf("c1 < c2");
        }

        return 0;
    }

 

 

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

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

相关文章

海康威视解码器维修DS-6900系列DS-6916UD

海康威视解码器常见维修型号&#xff1a;DS-6916UD/DS-6901/DS-6904/DS-6908/DS-6910/DS-6912UD/6A16 DS-6A16UD 产品类型&#xff1a;视音频解码器纠错 I/O接口&#xff1a;输入 DVI-I纠错&#xff1b;输出 VGA&#xff0c;BNC纠错&#xff1b;音频输入 HDMI纠错 产品特性 …

CY5-COOH脂溶性羧基荧光染料1032678-07-1

Cyanine5-COOH是一种荧光染料&#xff0c;它CAS号1032678-07-1&#xff0c;分子式为C32H39ClN2O2&#xff0c;分子量为519.12。Cyanine5-COOH具有良好的光稳定性和荧光亮度&#xff0c;可以用于生物学研究、诊断、药物筛选等领域。 Cy5-COOH (来自星戈瑞的花菁染料) 含有羧基官…

【源码篇】基于SSM开发的社区论坛系统

系统介绍 基于SSM开发的社区论坛系统是一个分享创造的开发者社区&#xff0c;是高品质的开发者社区&#xff0c;致力于为开发者提供一个分享创造、结识伙伴、协同互助的平台。 系统功能说明 1、游客模式下可以查看系统发布的话题、及用户参与的讨论&#xff0c;可以查看系统…

在Linux中安装宝塔面板

在公网为x.x.x.x的服务器上安装宝塔面板 安装宝塔面板 第一步&#xff0c;下载安装宝塔面板。 命令&#xff1a;cd /usr/local/src wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh 注意&#xff1a;需要等几分钟来下载宝塔面…

【STM32】Systick定时器

一、STM32的5种定时器简介 1.独立看门狗&#xff08;IWDG&#xff09; VS 窗口看门狗&#xff08;WWDG&#xff09; 1.独立看门狗&#xff08;IWDG&#xff09; 独立看门狗&#xff1a;当没有到设定时间之前&#xff0c;给它喂了狗&#xff0c;就会回到初始值。 2.窗口看门狗…

JAVA对象大小的获取

1. Java 对象的内存布局 Java的实例对象、数组对象在内存中的组成包括如下三部分&#xff1a;对象头Hearder、实例数据、内存填充。示意图如下所示 对象头 其主要包括两部分数据&#xff1a;Mark Word、Class对象指针。特别地对于数组对象而言&#xff0c;其还包括了数组长度…

figma-如何批量修改字体

一.选择字体 二.批量替换 编辑—>替换相同字体

3.3、Linux项目自动化构建工具make/makefile

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 目录 背景 依赖关系 依赖方法 实例代码 原理 项目清理 背景 会不会写makefile&#xff0c;从一个侧面说明了一个人是否具备完成大型工程的能力再一个&#xff0c;我们平时使用的集成开发环境&#xff0c;创建一个工程…

[量化投资-学习笔记006]Python+TDengine从零开始搭建量化分析平台-MACD

在上一章节介绍了 EMA 均线的计算&#xff0c;本节主要介绍均线的进化形态之一&#xff1a;MACD MACD (Moving Average Convergence / Divergence) 指数平滑移动平均线。MACD 是通过计算不同时间的 EMA 的差值俩判断价格趋势。 MACD 包括 3 个值&#xff1a; 长短期 EMA 差值…

信号上的串联电阻是如何改善信号质量的

一般我们在进行PCB设计时可能会留意到有些信号会串联一个电阻&#xff0c;那么大家是否有想过所串联的电阻是有什么作用呢&#xff1f; 大家可以看一下下面图示的案例&#xff0c;信号是从CPU处出来再接到DDR颗粒的&#xff0c;每一个DDR数据线都有串联一个电阻&#xff0c;其…

高速串行协议——Aurora

Aurora简介 Aurora 协议是一个用于在点对点串行链路间移动数据的轻量级链路层协议&#xff0c;并为物理层提供透明接口&#xff0c;让专有协议或业界标准协议上层能方便地使用高速收发器。 Aurora通信模型 在发送端&#xff0c;用户端应用程序可以通过AXI总线接口实现与Aurora…

虹科示波器 | 汽车免拆检测 | 2017款长安福特翼虎车发动机故障灯异常点亮

一、故障现象 一辆2017款长安福特翼虎车&#xff0c;搭载CAF488WQ9发动机&#xff0c;累计行驶里程约为8.9万km。该车因发动机故障灯异常点亮在其他维修厂检修&#xff0c;维修人员用故障检测仪检测&#xff0c;提示气缸3失火&#xff0c;调换火花塞、点火线圈及喷油器&#xf…

Sandcastle生成文档

下载: https://github.com/EWSoftware/SHFB/releases 使用Sandcastle生成Api文档需要使用对应程序集的注释xml 程序集dll作为数据源&#xff0c;通过对xml dll数据解析生成文档&#xff1b;所以主体步骤如下&#xff1a; 程序集资源生成创建配置.shfbproj项目编译构建文档 …

累计概率分布、概率分布函数(概率质量函数、概率密度函数)、度量空间、负采样(Negative Sampling)

这里写自定义目录标题 机器学习的基础知识累计概率分布概率分布函数度量空间负采样&#xff08;Negative Sampling&#xff09;基于分布的负采样&#xff08;Distribution-based Negative Sampling&#xff09;&#xff1a;基于近邻的负采样&#xff08;Neighbor-based Negativ…

【Linux进程】进程地址空间

目录 程序地址空间回顾 进程地址空间 宏观理解 谈细节 1、进程地址空间究竟是什么&#xff1f; 2、管理地址空间 3、页表 总结几个问题&#xff1a; 1、为什么要有进程地址空间&#xff1f; 2、进程切换 3、进程具有独立性&#xff0c;怎么做到的&#xff1f; 程序地…

C++程序崩溃时,使用Windbg静态分析dump文件

Window环境下的C程序如果发生异常崩溃&#xff0c;首先会和客户联系&#xff0c;让帮忙取特定目录下的dump文件和log文件来分析崩溃的原因。不过发生崩溃的话&#xff0c;从log一般分析不出特定原因&#xff0c;这时候dump文件就起作用了。可以通过Visual Studio和WinDbg来静态…

看看顶级外贸业务员是如何跟进客户的?

许多外贸业务员&#xff0c;都碰到过客户跟进上的困难。那到底外贸业务员如何跟进客户&#xff0c;才能越跟越近&#xff0c;最终成交呢&#xff1f;本篇文章设定了几个客户回复的场景&#xff0c;看看顶尖销售都是怎么应对的吧&#xff1f; 一 客户说暂时没有需求 1.问清楚客…

京东app地推拉新和京喜大赢家网推app拉新申请渠道 附全套攻略

京东app地推拉新和京喜大赢家网推拉新可以通过“聚量推客”申请 聚量推客是什么呢&#xff1f;一手官签服务商直营app拉新平台 京东app地推拉新项目和京喜大赢家网推拉新项目有什么区别呢&#xff1f; 京东app只能地推作业&#xff0c;京喜大赢家推广支持网推推广操作也更简…

【C语法学习】18 - fread()函数

文章目录 1 函数原型2 参数3 返回值4 示例 1 函数原型 fread()&#xff1a;从与指定流stream相关联的二进制文件中读取数据块储存在str指向的内存空间中&#xff0c;函数原型如下&#xff1a; size_t fread(const void *ptr, size_t size, size_t count, FILE *stream)2 参数…

为什么大家都想找运营类的工作?

为什么大家都想找运营类的工作&#xff1f; 一、入门门槛 随着需求的持续增长&#xff0c;市场上的人员素质难以迅速匹配。在高校中&#xff0c;也难以培养出对口的应届毕业生。因此&#xff0c;许多企业在招聘运营人员时&#xff0c;更倾向于自行培养。对于新人的要求相对较低…