数组笔记

数组

数组是存储数的容器,必须先定义后使用

一维数组

定义格式
元素类型名 数组名[元素数]={元素}

  • 元素类型名定义该数组存放的元素类型
  • 方括号内是元素个数

例如

int a[10]={1,2,3,4,5,6,7,8,9,10}

表示该数组中有十个元素,a[0].a[1]…a[9]

数组是从0开始
如果捆好内不写元素数,系统也会根据花括号内的元素个数自动确定元素数
不可以对数组整体赋值

用输入函数对数组赋值时,必须要加&

#include<stdio.h>
main()
{
     int  i,a[10];
     for(i=0;i<10;i++)
     {
        printf("请输入第%d个数",i);
        scanf("%d",&a[i]);
     }
}

二维数组

二维数组的定义

格式

元素类型名 数组名[行数][列数]={元素初值}

  • 元素类型名同一维
  • 数组名同标识符
  • 行数 列数 元素初值自行定义
int a[2] [3]={{1,2,3},{4,5,6}}
int a[2] [3]={1,2,3,4,5,6}

上述两种表达的效果一样为2行3列的二维数组,花括号里面的花括号是按行进行赋值,如果不分组则系统会根据自行赋值
初值不够时,系统自动加0

定义时,行数可以省略,系统会根据初值判断行数
二维数组是优先按行存放

在这里插入图片描述

二维数组的引用

与一维数组的引用一样,下标从0开始排列,在引用数组变量之前,必须先定义该数组,不可整体给数组赋值

字符型数组

字符型数组的定义与使用

定义格式

char 数组名[元素数]={元素初值列表}

  • 初始化时如果元素初值列表给出的字符数小于定义的元素数,则后面会自动补齐ASCII码为0的字符‘\0’,在字符串处理中字符‘\0’作为字符串结束符
  • 可以去掉定义时的元素数,用元素初值列表中的元素个数来定义元素数,这种情况下后面不会自动加字符串结束符
  • 定义的元素数一定要大于实际使用的长度

字符数组的输入与输出

用scanf()和printf()输入和输出字符数组时,有如下两种格式符:

%c–逐个元素输入和输出字符(char)
%s–整体一次性输入和输出字符串(string)

用%c逐个输入与输出

这种方式进行输入时,元素下标在循环中不断变化,逐个输入与输出,输入时要加地址符&

这种方法输入时系统不会自动加‘\0’,也不会检测

用%s整体输入字符串

char c[10];
scanf("%s",c);
  • 数组名本身代表该数组的首地址(0号元素地址),所以不加地址符
  • 整体输入,系统会在字符串的末尾自动加‘\0’
  • 输入多个字符串,用空格隔开。
char a1[10],a2[10],a3[10];
scanf("%s",a1,a2,a3);

如果输入:I am happy!
则三个数组中分别存放 I am happy!
正因为scanf()中空格是多个字符串的分隔符,所以用输入函数输入带空格的字符串时,只有第一个空格前的字符串有效

用%s整体输出字符串

如果数组长度大于字符串长度,则遇到\0结束

如果数组中有多个\0,则遇到第一个就结束

入宫数组中没有\0,则输出时会输出该数组之后的内容,直到遇到第一个\0为止

==只有字符数组可以整体输入与输出,其他类型的数组都不可以

常用字符串处理函数

字符串整行输入函数

  • gets(字符数组)

    从键盘将带空格的字符序列全部输入到指定的字符数组中,并自动加字符串结束符。该函数的返回值是字符数组的首地址

  char  str[20];
  gets(str);

字符串整体输出函数

  • puts(字符串)
    将指定的字符串作为一行输出到终端
char a[ ]={"I am happy"};
puts(a);

puts()输出完自动换行

测字符串长度函数

  • strlen(字符串)
    返回字符串有效长度,不包括\0
char a[20]={123456};
strlen(a);

长度为5

字符串比较函数

  • strcmp(字符串1,字符串2)
    字符串比较,返回比较结果。对1和2中的字符从左向右逐个按ASCII码值进行比较,直到字符值不相等或遇到\0结束。如果相等,则返回整数0;1大,则返回正整数;2大,返回负整数。

大写字母比相应小写字母ASCII值小32

字符串复制函数

  • strcpy(字符数组1,字符串2)
    将字符串2包括\0全部复制到1中,字符串2可以是字符串常量或字符数组名,而1只能是字符数组名。此函数返回的是字符数组1的首地址

字符数组1要有足够的长度,以便存放字符串2

不能用=赋值

char a[20];
strcpy(a,"happy");
puts(a);

输出happy

字符串连接函数

  • strcat(字符数组1,字符串2)
    将字符串2连接到字符数组1后面,字符串2可以是字符串常量或字符数组名,而1只能是字符数组名。此函数返回的是字符数组1的首地址
    字符数组1要有足够的长度,以便存放字符串2

连接时1后的\0被覆盖,两个字符串连接为一个,在字符数组中只保留新字符串后的\0

char a[20]={I am very};
puts(strcat(a,"happy"););

输出I am very happy

加油

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值