当前位置:网站首页>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:冒泡排序进行对整型数组进行升序排序?
解答:冒泡排序核心思想:将两个相邻元素进行比较。
冒泡排序的结果是一趟冒泡排序让一个数据来到它最终该出现的位置。
冒泡排序原理示意图:
第一趟冒泡排序流程示意图:
依次冒泡排序流程示意图:
代码示例及部分分析:
代码输出结果图:
结语
小伙伴们,当你学到这里的时候,你们应该收获了挺多的东西吧!🥳🥳🥳后续小杨会给大家总结其他的内容,不断更新优质的内容来帮助大家,一起进步。加油,追梦人!让我们一起拥抱美好明天!
边栏推荐
- 学习突围2 - 关于高效学习的方法
- 我那“不好惹”的00后下属:不差钱,怼领导,抵制加班
- About how appium closes apps (resolved)
- DrawerLayout禁止侧滑显示
- 【Presto Profile系列】Timeline使用
- xshell连接服务器把密钥登陆改为密码登陆
- 【等保】云计算安全扩展要求关注的安全目标和实现方式区分原则有哪些?
- [dark horse morning post] Huawei refutes rumors about "military master" Chen Chunhua; Hengchi 5 has a pre-sale price of 179000 yuan; Jay Chou's new album MV has played more than 100 million in 3 hours
- Pay close attention to the work of safety production and make every effort to ensure the safety of people's lives and property
- Go language learning notes - structure
猜你喜欢
OSI seven layer model
日本政企员工喝醉丢失46万信息U盘,公开道歉又透露密码规则
Practical example of propeller easydl: automatic scratch recognition of industrial parts
About how appium closes apps (resolved)
LIS 最长上升子序列问题(动态规划、贪心+二分)
[dark horse morning post] Huawei refutes rumors about "military master" Chen Chunhua; Hengchi 5 has a pre-sale price of 179000 yuan; Jay Chou's new album MV has played more than 100 million in 3 hours
LIS longest ascending subsequence problem (dynamic programming, greed + dichotomy)
【学习笔记】zkw 线段树
Vscode编辑器ESP32头文件波浪线不跳转彻底解决
Coscon'22 community convening order is coming! Open the world, invite all communities to embrace open source and open a new world~
随机推荐
php——laravel缓存cache
[etc.] what are the security objectives and implementation methods that cloud computing security expansion requires to focus on?
DETR介绍
【黑马早报】华为辟谣“军师”陈春花;恒驰5预售价17.9万元;周杰伦新专辑MV 3小时播放量破亿;法华寺回应万元月薪招人...
Practical example of propeller easydl: automatic scratch recognition of industrial parts
学习突围2 - 关于高效学习的方法
PACP学习笔记一:使用 PCAP 编程
日本政企员工喝醉丢失46万信息U盘,公开道歉又透露密码规则
About the problem of APP flash back after appium starts the app - (solved)
Some principles of mongodb optimization
Per capita Swiss number series, Swiss number 4 generation JS reverse analysis
MySQL入门尝鲜
自定义线程池拒绝策略
Isprs2021/ remote sensing image cloud detection: a geographic information driven method and a new large-scale remote sensing cloud / snow detection data set
Sed of three swordsmen in text processing
[untitled]
提升树莓派性能的方法
一文读懂数仓中的pg_stat
Fast development board pinctrl and GPIO subsystem experiment for itop-imx6ull - modify the device tree file
Mongodb command summary