level 1 day5 2

(一)

  1. 字符数组:元素的数据类型为字符类型的数组

如char c[10], ch[3][4]

  1. 字符数组的初始化

有两种形式,逐个字符赋值 ‘a’'b' 'c' '\0'

用字符常量赋值 "abc" 这两个是等价的

这个不等价于"Hello"了,因为字符常量里面不带\0

  1. 0与‘0’与NULL的区别

0: 整数0

'0’: ASCII码值为0

NULL: 宏定义

4.

第一个是字符数组,虽然没有给维数,但是默认为3

第二个也是字符数组,但是只初始化了3个,后面剩下三个都是\0,s所以这个等价于“abc”

是字符数组的同时也是字符串

  1. 这个地方为什么arr1只初始化了 3个字符,但是打印了六个字符呢?

因为arr1和arr2的地址是连续的,arr1中没有\0,但是由于连续,直接跟着打印了arr2中的内容,而arr2中有\0,所以打印了arr1和arr2中内容,就会结束

那么怎么说明arr1和arr2的地址是连续的呢?我们下面在虚拟机里面验证一下,输出一下地址

(二)

“\0”不算字符串长度

2.1比较聪明的初始化方法,列设置为7,保留出\0,可以直接写成字符串

2.2 这个例子的典型就是行列未知,需要自己计算

这个是计算行,整个二维数组占据的空间/一行占据的空间

这个是计算列,整个一行占据的空间/每个字符型占据的空间=几个字符

2.3 这个相比于上面的就是少了两个不用的变量,m,j,节省了存储空间

2.4(程序输出:设计思路)

2.4.1定义初始化数组全为0(如果不初始化为0的话,输出了有限的字符,剩下的字符就会乱码输出)

2.4.2 定义变量

2.4.3提示输入字符

2.4.4接受键盘输入的字符

2.4.5计算有几个字符 n=strlen(arr); n=sizeof(arr)/sizeof(char)这两种方式都可以

2.4.6逆向遍历数组并依次输出字符

2.4.7返回

2.5 逆序输出字符串的另一种思路

相比于第一种逆序输出(只有一个变量,从最后一个字符开始遍历并且输出)

这边我们可以设置两个变量,一个i,一个j,一个从前面开始遍历,一个从后面开始遍历

12345 \0 1和5换,2和4换,3不换 最终\0也不换 换的时候要借助一个中间变量ch

54321 \0

2.6

gets和scanf的区别是什么?

gets 可以接受空格的输入

scanf不可以接受空格的输入,如果scanf接收了空格,那么这个空格相当于结束符

scanf如果要接收空格后面的字符,那么需要用%c一个个的输入

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值