IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 学习C的知识点八--数组 -> 正文阅读

[数据结构与算法]学习C的知识点八--数组

1 数组

是一个能够存放若干个相同数据类型的数据结构
注意:
在声明数组的时候,想要往数组内存放什么数据类型,那么就必须给这个数组声明成对应的数据类型。

2 数据的声明及定义

数组的数据类型+数组名[数组的容量]={实际数据(每一个实际数据使用’,’分隔开)};
示例:

 1. int arr[5]={01,2,3,4}; 
 2. int arr[5]={4}; 将数组中的第0个元素初始化为4,其它元素初始化成03. int arr[5]={0}; 将数组中的所有元素初始化成0

注意:

  1. 在声明数组的时候,可以不规定数组长度,但是必须初始化数据。
    如: int arr[]={0,1,2,3,4};因为系统在运行到数组声明部分时,必须向内存空间申请一片固定大小的内存。那么数据的声明部分没有给到系统数组的大小是多少,那么系统就会去数组的定义部分,查找数组的实际的长度,用来向系统申请空间大小。
    所以说,系统会优先查看数组声明部分的容量,再去查看数组实际定义的长度来申请内存空间。如果声明和定义都没有约定数组的容量,那么导致编译报错。
  2. 当数组的容量使用一个变量去声明的时候,则此时不能定义数组。因为变量的值可能发生改变,当数组使用变量去声明长的时候,系统肯定不会知道数组的确切长度是多少,此时如果给该数组做了明确的定义,可能导致定义的长度比实际数组容量要大。所以系统禁止使用变量声明容量的时候同时去定义该数组。

3 数组的访问

数组名[数组元素位置];

示例:
有一个数组int arr[5]={0,1,2,3,4};如要访问第1个元素和第2个元素,使其相加,导出结果:arr[1]+arr[2]==3 (数组的下标是从0开始计算的);

4 访问整个数据结构

访问整个数据结构这个思想,在所有数据结构中都是通用的,并且是所有功能的基础。
我们把访问整个数据结构的过程称作:遍历——对一个数据结构中的所有数据,全都并且仅访问一次。
所有数据结构都会面临如下课题:
数据结构的 增、删、改、查、排、遍历
数组名本身是一个地址,这个地址和该数组首元素的地址是一样的。

5 二维数组

int arr[m][n]; 表示二维数组有n列m行 即由m个有n个元素的一维数组组成。
示例: int arr[2][3]={{1,2,3},{4,5,6}};
逗号运算符: 可以用来将一个表达式隔开成若干个表达式,使得每一个表达式独立运算,但是整个表达式的值取最末尾表达式的值。

6 数组的排序:

①冒泡排序:逻辑最简单,代码也最简单,但是时间复杂度最高(效率最低)。
使用比较运算符,当发现两者之间的最大值出现,就立即进行换位。

②选择排序:比冒泡难一点,但是效率高。
使用比较运算符,查找出第一位置的元素并记录好下标,当遍历完毕后再把找到的元素进行换位。

③快速排序:代码难度最为高的一种排序方式 ,但是效率非常高。

7 字符数组

字符数组能够和整形数组一样的使用方式,但是字符数组有其特殊的使用方式。

7.1字符数组的声明及定义:

①如同其它数组一样定义:

char str[20]={‘h’,’e’,’l’,’l’,’o’};

②字符数组特有的定义方式:

char str[20]=”hello”;
7.2字符数组的使用:

①如同整型数组一样输入输出

char str[20]= {‘h’,’e’,’l’,’l’,’o’};
for(int i=0;i<5;i++)
{ scanf(%c”,&str[i]);printf(%c”,str[i]);}

②字符数组特有的输入输出

char str[20]= {0};
scanf(%s”,str);//scnaf中%d要求是int*类型,%c要求的是char*类型,%s要求的是char*类型,
printf(%s\n”,str);//scnaf中%d要求是int类型,%c要求的是char类型,%s要求的是char类型,

注意: 在字符数组中,系统默认会在每一个字符数组/字符串的结尾位置,加上结束符’\0‘(也就是空字符)。
由于以上特性,我们在设计字符数组的时候,最大容量最低要求要比实际长度多1.

7.3字符数组的函数:
#include<string.h>

strlen,用来测量一个字符数组的实际长度,
参数列表:目标字符数组
返回值:返回字符串的长度。

strcpy(s1, s2);,用来实现字符数组的拷贝,
功能:复制字符串 s2 到字符串 s1。是字符数组/字符串之间唯一的相互赋值的方法。使用该函数的时候,目标字符数组尽量比源字符的容量要大。

strcmp(s1, s2);
如果 s1 和 s2 是相同的,则返回 0;如果 s1<s2 则返回小于 0;如果 s1>s2 则返回大于 0。是比较ascii的值。返回的是两者的差值

strcat,用来拼接两个字符数组/1个字符数组和1个字符串
参数列表:字符数组1,字符数组2/字符串
返回值:将更新后的“字符数组1”返回

strtok,用来分隔字符串
参数列表:待分隔的字符串,分隔字符串
返回值:分隔后取出来的第一个字符串;

memcpy用法:
参数列表:目标指针,源指针,需要复制的数量
函数功能:将源指针上的内容,复制到目标指针指向内存空间上,复制的内存空间大小,为第三个参数。
返回值:将更新后的目标指针返回。

在这里插入图片描述

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-08-06 11:07:37  更:2022-08-06 11:10:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 22:39:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码