二维整形数组
1、二维整形数组的定义:
数据类型 数组名[第一维数组的元素个数][第二维数组的元素个数];
数据类型 数组名[行数][列数];
例如:int a[2][3];
2、数组元素的访问:
数组名[行下标][列下表];
例如:a[0][0]
3、初始化:
1.全部初始化
例如: int a[2][3] = {1, 2, 3, 4, 5, 6};
int a[2][3] = {{1, 2, 3}, {4, 5, 6}};
2.局部初始化
例如: int a[2][3] = {1, 2, 3, 4};
int a[2][3] = {{1, 2}, {3}};
int a[2][3] = {0};
int a[2][3] = {{0}};
3.默认初始化
行能省略,列不能省略
例如:int a[][3] = {1, 2, 3, 4};
int a[][3] = {{1, 2}, {3}};
要注意的是:初始化 != 赋值
4、二维数组的存储:
数组所占空间大小 = 每个元素所占字节大小 * 行数 * 列数
二维数组存储的特性:
1.连续性:数组的存储空间是连续的
2.有序性:数组存放数据顺序有序 将二维数组逐行从左到右存储
多维数组
二维数组是由一维数组构成的一维数组,N维数组:是由N-1维数组构成的一维数组
5、二维数组的输入和输出
1.输入:可以利用双层for循环scanf("%d")
2.输出:可以利用双层for循环printf("%d")
字符型数组
在C语言中没有字符串类型,只能通过字符型数组存放字符串
1、数组的定义:
数据类型 数组名[元素个数];
char str[32];
需要注意:
1.字符型数组在存放字符串时,必须能够存放下末尾的\0字符
2.元素个数必须为常量
2、数组元素的访问:
数组名[下标];
3、数组元素的初始化
1.全部初始化:
例如: char str[6] = {'h', 'e', 'l', 'l', 'o', '\0'};
2.局部初始化:
例如: char str[6] = {'h', 'e', 'l'};
需要注意:
没有给定初值的元素被赋值为0('\0') ,而不是'0'
3.默认初始化:
例如: char str[] = {'h', 'e', 'l', 'l', 'o'};
需要注意:
初始化 != 赋值
4、数组的存储:
数组所占空间大小 = 元素个数
数组存储的特性:
1.连续性:数组存放空间连续
2.有序性:按照顺序依次存放
5、字符串的输入和输出:
输入 printf("%s\n", str);
puts(str);
按照字符串打印:从字符串开头到第一个\0中间的内容打印
输出 scanf("%s", str);
gets(str);
两个的区别为:scanf无法接收带' '的字符串而gets可以接收带' '的字符串
6、字符串常见操作:
1.字符串的赋值(字符串的拷贝):
strcpy:字符串拷贝函数
用法:
strcpy(str, "hello world");
strcpy(str, src);
需要注意:
目的空间必须能够存放下拷贝的字符串,否则会内存越界
2.字符串的拼接:
strcat:字符串拼接函数
用法:
strcat(str, "world");
strcat(str1, str2);
需要注意:
原字符串数组必须能够存放拼接后的字符串
3.字符串的比较:
strcmp
字符串比较函数
用法:
strcmp(str1, str2);
如果结果 > 0则 str1 > str2
如果结果 < 0则 str1 < str2
如果结果 == 0则 str1 == str2
需要注意:
1.区分大小写
2.两个字符串到右依次比较,不相同的ASCII码值谁大,字符串谁就大
4.字符串的长度:
strlen
获得字符串的长度(从字符串开头到’\0‘之前元素的个数)
用法:
int len;
len = strlen(str);