一、数组
数组是用来存储一组数据的构造数据类型。
1.一维数组:
定义形式为 : 类型 数组名[元素个数]
比如 int a[3] = {11,12,13};
[] 只能写在变量名的后面, [] 里面的个数必须是一个固定的值,可以是常量、常量表达式(1 + 2)
比如 char b[5];
int b['A'];
int c[1 + 2];
数组初始化
int a[4] = {2,5};
int a[4]; a[0] = 1; a[1] = 2;
int a[] = {1,2};
一维数组a的地址其实等于数组起始位置的地址 a[0] 的地址
2.二维数组:
二维数组其实就是多个一维数组组合起来的数组
定义形式为:int a[2][2] = {{1,2},{3,4}};
也可以按照存储的顺序初始化 比如 int a[2][2] = {1,2,3,4};
对部分元素初始化 int a[2][2] = {{2},{1,2}}; int b[2][2] = {{},{,1}};
可以省略行数,但是不能省略列数 int a[][2] = {1,2,3,4,5,6}; int a[][3] = {{1,2,3},{0,3},{}};
二维数组的地址与一维数组的类似。
三维乃至更多维的数组类似,可以以此类推。
二、字符串
在C中存在char这种字符类型,但是它的存储大小有限,只能存储一个字符,比如
char chr = 'a';
chr = 'ab';
chr中存储的结果变为了 b
由于c语言中没有字符串类型,所以就引入了字符串,其实就是做了一个char类型的数组来处理字符串
字符串的初始化:char a[3] = {'d','c','\0'};
字符串一定是 ‘\0’结尾的,如果不以 ‘\0’结尾,那就有可能造成内存越界的操作。
1.字符串的输出
在输出的时候使用 %s 的占位符
printf("字符串为%s",a);
也可以使用 puts函数输出,但是一次只能输出一个字符串,而且会默认在字符串结尾添加一个 ‘\0’
puts(a);
puts("dc");
2.字符串输入
字符串输入的函数有:scanf(); gets(); 它们都会在输入结束之后会自动添加一个 ‘\0’
char a[10];
scanf("%s",a);
或者
gets(a); 但是gets()一次只能读取一个字符串,可以读取空格、tab的字符串,直到遇到回车
3.字符处理函数
字符输出函数putchar
putchar(65); // A
putchar('A'); // A
int a = 65;
putchar(a); // A
输出结果都为A,但是一次只能输出一个字符,printf可以输出多个
字符输入函数getchar
char c;
c = getchar();
一次只能读入一个字符,scanf可以输入多个字符,getchar()可以读入空格、tab回车换行符
4.字符串处理函数
strlen函数 从首地址开始测量字符个数,不包括 ‘\0’
char s1[] = "dc";
int size = strlen(s1); // 长度为2
strcpy函数 复制字符串,只拷贝到‘\0’之前
char s[10];
strcpy(s, "dc");
strcat函数 字符串的拼接,从第一个‘\0’后面开始拼接,会覆盖后面的数据
char s1[30] = "LOVE";
strcat(s1, "DC");
strcmp函数 比较两个字符串的大小,两个字符串按照ASCII码值逐个比较,知道遇见‘\0’为止