广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言数组全面总结梳理
  • 720
分享到

C语言数组全面总结梳理

2024-04-02 19:04:59 720人浏览 安东尼
摘要

目录一,一维数组1.创建和初始化2.使用下标访问3.在内存中的存储二,二维数组 1.创建和初始化2.使用下标访问3.在内存中的存储三,越界问题数组(array)是由一系列类

数组(array)是由一系列类型相同的元素构成。

一般形式:

类型     数组名  [常量表达式]

一,一维数组

1.创建和初始化

创建一堆相同元素的集合,以整型为例:


//创建大小为8的整型数组
int arr1[8];
// []里面应放常量,因此若:
int num=8;
//则有:
arr2[num];      num为变量,创建失败
// 此时 arr1 != arr2  
 

初始化就是合理赋值,有多种方式,合理即可:


//指定大小的初始化
int arr1[3]={1,2,3};
//不指定大小的初始化
int arr2[]={1,2,3};
//指定大小的不完全初始化
int arr3[3]={1,2};

这里创建字符数组时应注意这种情况:


	char arr1[] = {"abcdef"};
	char arr2[] = {'a','b','c','d','e','f'};

这两种初始化看着内容相同,但 arr1 不等同于 arr2,这里我们用 strlen函数 分别求他们的字符串长度:

arr1是我们能想到的,但是arr2却超出预料,原因是strlen遇到字符'\0' ('\0'为结束标志)结束读取,且打印出的个数里不算字符'\0'.

arr1字符串末尾f后面默认有结束标志,而arr2字符f后面无结束标志,为随机值,strlen必须读取到'\0'才会结束读取,因此读取到的为随机数。


	//改写arr2为:
char arr2[] = {'a','b','c','d','e','f','\0'};

那么结果:

2.使用下标访问

数组是用 [] 来进行下标访问的,数组下标从0开始。

   如:       arr1[3]={1,2,3};

则数据的下标为:  0 1 2        一一对应

写个栗子,分别打印 int arr2[5]={1,2,3,4,5}; 的每个元素

注:int sz = sizeof(arr2) / sizeof(arr2[0]);   //通过字节计算元素个数,确定判断条件 因为已经知道了元素个数里可省略 直接令 i<5.


#include <stdio.h>
int main()
{
	int i = 0;
	int arr2[5] = { 1, 2, 3, 4, 5 };         //创建数组arr2并初始化
	int sz = sizeof(arr2) / sizeof(arr2[0]);   //通过字节计算元素个数,确定判断条件
	for (i = 0; i < sz; i++)
	{
		printf("%d ",arr2[i]);            下标从0开始,依次访问每个元素
	}
	return;
}

3.在内存中的存储

由上面的栗子我们直接打印数组每个元素的内存:

观察不难发现每个元素间相差四个字节,且地址由低到高。

得到结论:数组在内存中是连续存放的。

二,二维数组 

1.创建和初始化

一般形式:

类型     数组名  [常量表达式][常量表达式]


//数组创建
int arr[3][4];   //三行四列
char arr[3][6];   //三行六列

一维是单行,这里可将二维理解为行列

初始化也与一维数组没多少差别:


//指定大小的初始化
int arr1[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};  
//不指定大小的初始化,(行可不指定,但列不可省略,必须指定)
int arr2[][6]={1,2,3};
 
int arr3[][4]={{1,2},{3,4},5,6,7,8,9};   //赋值中{}里面的{}可代表一行的内容
 
//指定大小的不完全初始化
int arr4[3][2]={1,2,3};

不完全初始化的值为0

2.使用下标访问

二维数组的访问就很有意思   将二维数组看成行列 用坐标来访问

以  int arr1[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};   三行四列  为例:

注:列和行的下标都是从0开始

比如我们想打印6,那么应该是arr1[1][1],而不是arr1[2][2].

3.在内存中的存储

继续以arr1为例:

地址依旧是连续的,由低地址到高地址。

三,越界问题

例如:

创建一个数组  int arr1[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};  访问时行不能<0 或 >=3,列不能<0 或 >=4,否则就是数组越界。

编译代码时,越界不一定会报错,注意自己检查。

到此这篇关于C语言数组全面总结梳理的文章就介绍到这了,更多相关C语言 数组内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C语言数组全面总结梳理

本文链接: https://www.lsjlt.com/news/138924.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C语言数组全面总结梳理
    目录一,一维数组1.创建和初始化2.使用下标访问3.在内存中的存储二,二维数组 1.创建和初始化2.使用下标访问3.在内存中的存储三,越界问题数组(array)是由一系列类...
    99+
    2022-11-13
  • C语言全面梳理结构体知识点
    目录一、什么是结构体二、结构体的定义三、结构体变量的定义四、结构体变量的初始化五、结构体变量的赋值六、引用结构体变量中的成员七、结构体变量的传参问题八、传输地址带来的问题九、动态结构...
    99+
    2022-11-13
  • C语言语义陷阱超详细梳理总结
    目录1 指针与数组2 非数组的指针3 作为参数的数组声明4 空指针并非空字符串5 边界计算与不对称边界6 求值顺序7 整数溢出8 为函数提供返回值1 指针与数组 C语言中只...
    99+
    2022-11-13
  • C语言 超详细梳理总结动态内存管理
    目录一.为什么存在动态内存分配二.动态内存函数的介绍1.malloc和free2.calloc3.realloc三.常见的动态内存错误1.对NULL指针的解引用操作2.对动态开辟空间...
    99+
    2022-11-13
  • C语言全面梳理文件操作方法
    目录1.什么是文件1.1程序文件1.2数据文件1.3文件名2.为什么使用文件3.文件的打开和关闭3.1文件指针3.2文件的打开和关闭4.文件的顺序读写什么是流5.文件的随机读写5.1...
    99+
    2022-11-13
  • C语言数组的各种操作梳理
    目录一、一维数组1.创建2.初始化3.使用4.数组在内存中的存储5.数组大小的计算二、二维数组1.创建2.初始化3.使用4.二维数组在内存中的存储三、数组作为函数参数1.关于数组名是...
    99+
    2022-11-13
  • C语言线性表全面梳理操作方法
    线性表:零个或多个数据元素的有限序列 强调几点: 首先它是一个序列。也就是说,元素之间是有顺序的,若元素存在多个,则第一个元素无前驱,最后一个元素无后继,其他都有一个前驱和后继。其次...
    99+
    2022-11-13
  • Java 面向对象和封装全面梳理总结
    关于面向对象和封装的个人理解 类和对象 类:对事物的一种描述(具有共同属性和行为的事物的抽象),例如手机,属性:品牌价格,行为:玩游戏,刷vx; 对象:客观存在(在java中体现就是...
    99+
    2022-11-12
  • C语言中各种运算类型全面总结
    目录一、概述二、四则运算三、关系运算四、逻辑运算与位运算五、深度剖析位运算一、概述 C语言中支持下面4种类型的运算 运算类型运算符四则运算+,-,*,/,%关系运算<,>...
    99+
    2022-11-13
  • C语言数组全面详细讲解
    目录1.基础知识2.数组的分类2.1按元素类型分类2.2按维数分类3.数组定义和初始化3.1 一维数组3.2 二维数组4.数组元素的引用方法5.字符数组的定义1.基础知识 C语言中使...
    99+
    2022-11-13
  • C语言中#define预处理语法总结
    目录一、使用#define定义标识符常量语法1:语法2:二、#define来定义带有参数的宏三、C语言给我们定义好的一些标识符常量一、使用#define定义标识符常量 语法1: ...
    99+
    2022-11-12
  • C语言面试常见考点排序总结
    排序算法有两块比较重要的知识点 内存消耗 :算法的内存消耗可以通过空间复杂度来衡量,排序算法也不例外。不过,针对排序算法的空间复杂度,有一个概念是原地排序。原地排序算法是指...
    99+
    2022-11-12
  • 梳理总结25个JavaScript数组操作方法实例
    目录1.删除数组重复项2. 获取数组的片段3.Array.from 达到 .map 的效果4.置空数组5. 将数组转换为对象6. 用数据填充数组7. 数组合并8.求两个数组的交集9....
    99+
    2022-11-13
  • C语言结构体的全方面解读
    目录前言一、结构体的声明与定义1.结构体的声明2.结构成员的类型3.结构体的定义二、初始化结构体三、访问结构体成员四、结构体嵌套五、结构体指针六、结构体传参总结前言 C语言提供了不同...
    99+
    2022-11-12
  • C语言学习之函数知识总结
    目录前言一、引入二、认识函数三、函数的作用四、函数的返回值五、定义函数六、函数的类型七、return语句与break语句的区别八、函数的分类九、主函数十、函数使用举例十一、函数的声明...
    99+
    2022-11-13
  • C语言实现学生管理系统总结
    本文实例为大家分享了C语言实现学生管理系统的具体代码,供大家参考,具体内容如下 前言 本周完成了学生管理系统,在完成的过程中遇见了许多问题,今天来总结上周写管理系统一些比较困难的模块...
    99+
    2022-11-13
  • C语言动态内存管理分析总结
    目录什么是动态内存分配动态内存函数的介绍freemalloccallocrealloc动态内存管理中常见的错误对NULL指针的解引用操作对动态开辟空间的越界访问对非动态开辟内存使用f...
    99+
    2022-11-12
  • C语言从基础到进阶全面讲解数组
    目录1.基础知识2.数组的分类2.1按元素类型分类2.2按维数分类3.数组定义和初始化3.1 一维数组3.2 二维数组4.数组元素的引用方法5.字符数组的定义1.基础知识 C语言中使...
    99+
    2022-11-13
  • c语言中缺省参数的类型总结
    1、函数全缺省参数,函数在定义或者声明时,所有的形参都默认值。 #include <stdio.h> //x,y为函数的形参,如果函数被调用时,没有设置x和y值,x值...
    99+
    2022-11-12
  • C语言求素数的几种方式总结
    目录一、判断n是否能被2~n-1整除方法一方法二二、判断n是否能被2~√n间的整数整除方法一方法二总结一、判断n是否能被2~n-1整除 输入的数n不能被2-(n-1)整除...
    99+
    2022-12-27
    C语言求素数 C语言素数 C语言求素数方式
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作