我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C语言全方位讲解数组的使用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

C语言全方位讲解数组的使用

接着上次的操作符的详解,让我们来简单了解C语言里的数组。

一维数组的创建和初始化

1.数组的创建

数组是一组相同类型的元素的集合。

2.数组创建方式 

type_t(数组类型) arr_name(数组名) [const_n](用来指定数组大小)

3.数组的初始化

数组的初始化是在其定义的时候就应该执行的,如:为5个已经知道的整形数据进行排序

//正确
int Arr[5] = { 1, 2, 3, 4, 5 };
//而不能用下面这种方式
int Arr[5];
Arr[5] = { 1, 2, 3, 4, 5 };

因为对于 Arr[5] = 来说,这是一个赋值操作,将右值赋值给左值,一切常数、字符和字符串都是右值。在这里 { 1, 2, 3, 4, 5 }; 并不是右值的一种,所以这是错误的。

另一个错误是,Arr[5] 下标为 5 这个元素实际上并不存在的属于数组的越界。

有数字类型的初始化,自然也有字符类型的初始化

字符类型初始化的两种方式:

char arr[5]={'a','b','c','d','e'};
char arr[5]= "abcde ";

1.空字符是字符串的终止符(空字符本身不是字符串的一部分,所以字符串的长度并不包含空字符)

2.操作字符串时,必须保证字符串以空字符(\0)结尾(不以空字符结尾的字符序列,不是字符串)。

一维数组的使用

用单引号形式初始化的数组代表只有这些数据,并且在末端不包含\0

总结

  • 数组是使用下标来访问的,下标是从0开始。
  • 数组的大小可以通过计算得到。
  • Int sz = sizeof(arr)/sizeof(arr[0])

一维数组的存储

当我们定义了长度为5的整型数组,操作系统就会为其分配连续的五个内存地址。

这些地址用来存放数据,每一个地址所占的字节是数组的数据类型所决定的。 如int类型的每一个地址占据着4个字节,double类型的8个。

因为每个整形大小为四个字节,所以如图每个地址间隔为4。

讲完了一维数组的知识点,让我们简单了解一下二维数组

二维数组的创建与初始化 

1.二维数组的创建

第一个括号指定行,第二个括号指定列

可以只对部分元素赋值,未赋值的元素自动取“零”值。例如:

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

2.二维数组的初始化

第一行:123 第二行:45

二维数组的列不能省略行可以在括号内大括号分割明确时省略

二维数组的存储

二维数组在内存中的存储

如果定义一个这样的二维数组int a[3][4]={undefined{1,3,5,7},{9,11,13,15},{17,19,21,23}};则其在内存中的表示可能下面这样的。

由上图可以看出,在内存中二维数组是按照行主序进行存储的,从内存的角度上看,二维数组本质就是一个一维数组。如果把二维数组的每一行看成一个整体,即看成一个数组中的一个元素,那么整个二维数组就是一个一维数组。而二维数组的名字代表二维数组第0行的首地址(注意它是代表一行元素的首地址,而不是第0行第0列元素的首地址,虽然是相等的,但不能这么理解,所以在没有强制转换的情况下,二维数据要么通过行指针进行参数传递,要么通过二维指针进行参数传递)。 

数组的越界

这里讲的数组长度存在一个界,而一旦超过了这个大小,就会发生一些未知的错误,也就是所谓的越界

这里用一个例子来说明下越界后数组内部的值的情况:

根据代码可知,当数组越界后,其数值是不确定的。

总结 

以上就是初阶数组的基本内容。如果你读到了这里,非常感谢你能看完的文章!!!

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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

C语言全方位讲解数组的使用

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

下载Word文档

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录