数组2____

本文围绕C语言的一维和二维数组展开。介绍了一维数组整形补0、字符补\\0的情况,以及不设置长度时的差异,还提及用strlen求长度的问题。对于二维数组,说明了初始化、访问方式,指出其在内存中连续存放,且行可省略列不可省略,最后提到与scanf结合时只能用二维数组。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前提:
int n = 8;
int arr[n];
这样写会报错,因为[]里面要常量,而n是个常变量

一维数组

写法一:
int类型的数组

 整形数组补0,字符数组补\0,在ASCLL码中\0即0

char类型的不完全初始化数组(设置长度)(剩余的默认为 '\0')

不设置长度:(末尾没有 \0)

写法二: 

数组里面放一个字符串:

不设置长度默认最后一位是 \0 

写法一和写法二的区别:

\0是打印结束的标志 ,这里的char ch2……因为末尾没有 \0,所以会一直往后打印,直到遇到\0才停止,因此会出现乱码

补充:

1、用strlen求数组的长度也会有差异,因为\0也会算上去(ch6是乱码,所以用strlen算出来的是随机值)

2、字符串本身是个数组

区别于 int a = 0;这样写会报错 

3、数组内元素的地址之间差距离的就是元素本身大小

 这里int类型大小是4

4、单引号与双引号

 这样写单引号会报错

二维数组

int ch[3][4]表示三行四列

二维数组的初始化(补0情况与一维数组相同)

形式一:

 形式二:

补充:

 这样写的话已经超过了3行,所以会报错

二维数组的访问:需要给横坐标和纵坐标(从0开始计数)

 

 补充:

一、二维数组在内存中也是连续存放的,一行内部连续,一行的尾和下一行的首连续

二、二维数组写的时候行可以省略,但是列不能省略,因为二维数组是先确定了一列有多少个元素,再判断从什么地方开始下一行

与scanf的结合:

 如果循环用scanf输入,则不能使用一维数组,因为不知道要输入的是几个字符

只能使用二维数组

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值