第七章 数组

7、数组

数组其实就是实现将“离散变量”变成“连续变量”。

1、一维数组

1、数组的变量名表示数组在内存中的起始地址,也是数组第一个数组元素在内存中的地址。

2、[] 是数组的标志,其中间必须是整型常量或整形常量表达式。

3、数组所占内存单元的字节数=数组大小×sizeof(数组元素类型)。

4、a[10]; //a[0]=1; a[10]={}; //a[0]=0;

5、memset函数可实现对某内存块的各字节单元整体赋同样的值。注意:是对内存的每个字节单元都赋值。如果它是2字 节,就是每个字节都赋值。所以其主要适合于字节型数组的整体赋值,当然也可以对非字节型数组进行清0。

​ (void *memset(void *s,char ch,unsigned n))

6、memcpy函数可以实现数组间的赋值。最好数组长度一样。

​ (void *memcpy(void *d,void *s,unsigned n))

7、一般来说 全局变量、静态变量处于数据区,默认初始化为0 (如果指定初始值,则为指定的值)
而局部变量处于堆栈区,其数值是随机的,即当时内存中的值。(默认为0为什么初始化的理由。)

2、二维数组

1、多维数组元素有多个小标,以标识它们在数组中的位置,所以也称为多下标变量。

2、系统必须知道第二维的大小,不能省略。

3、初始表中至少包含一个初值。例如:int a[2] [3]={{},{1,2,3}}; 错误 int a[4]={}; 错误

3、字符串与数组

1、字符串是一种以’\0‘结尾的字符数组。(“china” == {‘c’,‘h’,‘i’,‘n’,‘a’,‘\0’} == {“china”} != {‘c’,‘h’,‘i’,‘n’,‘a’})

2、在用字符数组来存放某个字符串常量时,如果要指定字符数组的大小,那么其大小至少要比字符串的长度大1,用以存 放’\0‘。

3、gets函数能接受包含空格字符的字符串,但定义字符数组时其长度一定要足够长,以便保存整个字符串和其结束标志。 它会覆盖先前的字符串。如:char ss[10]=“12345”; gets(ss); //输入 abc 结果为 abc

4、scanf函数输入字符串会忽略前导空格,遇到空格或回车符输入操作就终止了。为了避免输入的字符串长度超过数组的 大小,可以在调用scanf函数时使用%ns格式控制符,整数n表示域宽限制,如果没有遇到空格,输入n个字符后停止。

5、puts函数输出时将字符串结束标志’\0’ 转换成换行符’\n’。

6、strlen函数返回字符串中包含的字符个数(不包含’\0’)。

7、strcpy函数将字符串2复制到字符数组1中(包含字符串结尾符’\0’)。

8、strncpy函数将字符串2的前n个字符复制到字符数组1中去,但未在末尾加’\0’。

9、strcmp函数将两个字符串逐个字符比较其ASCII码大小,前者大返回正整数,相等返回0,后者大返回负整数。

10、stricmp函数比较两个字符串时不区分大小写。

11、strncmp函数将字符串1前n个字符的子串与字符串2前n个字符的子串进行比较。

12、strcat函数将字符串2连接到字符数组1的后面(包括结尾符’\0’)。

img

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ADOH5rsI-1655997116799)(https://cdn.jsdelivr.net/gh/2339539741/tuchuang/img/202206232311090.jpg)]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值