当前位置:网站首页>C语言数组相关问题深度理解
C语言数组相关问题深度理解
2022-07-07 11:28:00 【「小杨」】
大家好呀!我是小杨。小杨把C语言中的数组中常见的问题做了一个小总结,希望在方便自己理解复习的同时也能够帮助到大家。
问题清单:
问题1:字符数组的两种写法区别?
问题2:二维数组能否看作成一维数组?
问题3:一维数组与二维数组在内存中的存储联系?
问题4:二维数组的行数可以省略,列数不可省略的原因?
问题5:一维数组和二维数组的越界访问?
问题6:数组传参时,形参的两种写法?
问题7:冒泡排序进行对整型数组进行升序排序?
问题解答:
问题1:字符数组的两种写法?
解答:由于C语言中没有字符串类型,所以用char数组代字符串类型,定义字符数组的方式有两种,分别为:以单字符形式和以字符串形式。
方式一:以单字符形式
要声明初始化一个可存储四个有效值的字符数组,形式如下:
char ch[4]={'w','o','r,'d'};
方式二:以字符串形式
要声明初始化一个可存储四个有效值的字符数组,形式如下:
char str[5]=''word";//字符串数组大小一定要先声明为5,因为要留出str[4]给编译器自动存储'\0',如若声明初始化为:char str[4]="word",报错
注意:
1.当未存满时,对于两种数组,剩余的有效位置都默认初始化为'\0'
2.当存满时,字符数组最后一个有效位置不一定赋值为'\0',仍可以是想要存储的有效值,但字符串数组的最后一位有效位置一定为'\0'
问题2:二维数组能否看作成一维数组?
解答:可以,二维数组本来就是被看成特殊的一维数组,可被理解为二维数组是一维数组的数组。通俗理解是:原二维数组的每一行代表该特殊一维数组中的元素。
问题3:一维数组与二维数组在内存中的存储联系?
解答:一维数组和二维数组在内存中的布局方式都是一样的,即在内存中是连续存放的,从低地址向高地址方向移动;但是两者的访问形式有所差异,分别是以一维数组和二维数组的访问形式来进行。
一维数组在内存中的存储示意图:
二维数组在内存中的存储示意图:
问题4:二维数组的行数可以省略,列数不可省略的原因?
解答:二维数组可以省略行。 因为二维数组存储的时候是“先行后列”,如果不指定列数,就不能知道一行放几个数据,而只要知道了列数,排头就可以知道一共能放多少行。
问题5:一维数组和二维数组的越界访问?
解答:数组的下标是有范围限制的。 数组的下规定是从0开始的,如果数组有n个元素,最后一个元素的下标就是n-1。 所以数组的下标如果小于0,或者大于n-1,就是数组越界访问了,超出了数组合法空间的访问。二维数组的行和列也可能存在越界。 而C语言本身是不做数组下标的越界检查,编译器也不一定报错,但是编译器不报错,并不意味着程序就 是正确的, 所以程序员写代码时,最好自己做越界的检查。
一维数组越界示意图:
二维数组越界示意图:
问题6:数组传参时,形参的两种写法?(与问题7相联系)
解答:写法1:数组形式 写法2:指针形式
示例用问题7来具体说明两者。
数组形式示意图:
指针形式示意图:
问题7:冒泡排序进行对整型数组进行升序排序?
解答:冒泡排序核心思想:将两个相邻元素进行比较。
冒泡排序的结果是一趟冒泡排序让一个数据来到它最终该出现的位置。
冒泡排序原理示意图:
第一趟冒泡排序流程示意图:
依次冒泡排序流程示意图:
代码示例及部分分析:
代码输出结果图:
结语
小伙伴们,当你学到这里的时候,你们应该收获了挺多的东西吧!🥳🥳🥳后续小杨会给大家总结其他的内容,不断更新优质的内容来帮助大家,一起进步。加油,追梦人!让我们一起拥抱美好明天!
边栏推荐
- [untitled]
- Per capita Swiss number series, Swiss number 4 generation JS reverse analysis
- Cinnamon Applet 入门
- Isprs2021/ remote sensing image cloud detection: a geographic information driven method and a new large-scale remote sensing cloud / snow detection data set
- Scrapy教程经典实战【新概念英语】
- 共创软硬件协同生态:Graphcore IPU与百度飞桨的“联合提交”亮相MLPerf
- Read PG in data warehouse in one article_ stat
- 记一次 .NET 某新能源系统 线程疯涨 分析
- PHP - laravel cache
- PAcP learning note 1: programming with pcap
猜你喜欢
10 pictures open the door of CPU cache consistency
迅为iTOP-IMX6ULL开发板Pinctrl和GPIO子系统实验-修改设备树文件
Vscode编辑器ESP32头文件波浪线不跳转彻底解决
自定义线程池拒绝策略
日本政企员工喝醉丢失46万信息U盘,公开道歉又透露密码规则
Practical example of propeller easydl: automatic scratch recognition of industrial parts
Coscon'22 community convening order is coming! Open the world, invite all communities to embrace open source and open a new world~
分布式事务解决方案
Practical example of propeller easydl: automatic scratch recognition of industrial parts
单片机学习笔记之点亮led 灯
随机推荐
共创软硬件协同生态:Graphcore IPU与百度飞桨的“联合提交”亮相MLPerf
JNA learning notes 1: Concepts
[untitled]
一文读懂数仓中的pg_stat
Esp32 construction engineering add components
10 pictures open the door of CPU cache consistency
Isprs2021/ remote sensing image cloud detection: a geographic information driven method and a new large-scale remote sensing cloud / snow detection data set
leecode3. 无重复字符的最长子串
RecyclerView的数据刷新
国泰君安证券开户怎么开的?开户安全吗?
基于鲲鹏原生安全,打造安全可信的计算平台
TPG x AIDU|AI领军人才招募计划进行中!
ESP32 ① 编译环境
简单好用的代码规范
PCAP学习笔记二:pcap4j源码笔记
LeetCode_ Binary search_ Medium_ 153. Find the minimum value in the rotation sort array
Cinnamon Applet 入门
centso7 openssl 报错Verify return code: 20 (unable to get local issuer certificate)
mysql 局域网内访问不到的问题
How did Guotai Junan Securities open an account? Is it safe to open an account?