C语言之数组
一,一维数组
1,一维数组的定义:
类型符 数组名[常量表达式]
注:1)常量表达式中可以包括常量和符号常量.int a[3+5]是合法的,int a[n]是不合法的,C语言不允许对数组的大小作动态定义
2)如果在被调用的函数(不包括主函数)中定义数组,起长度可以是变量或非常量表达式,可称为“可变长数组”
3)如果指定数组static(静态)存储方式,则不能用“可变长数组”
2,一维数组的引用
1)数组名[下标]
2)指针
3,一维数组的初始化
1)在定义数组的时候就对其赋初值
int a[10] = {0,1,2,3,4,5,6,7,8,9}
2)对数组中的部分元素赋值
int a[10] = {0,1,2,3,4}
那么,剩余的五个元素为默认值0
注:
A,如果对数组中的所有元素都赋值为0
int a[10] = {0,0,0,0,0,0,0,0,0,0}
可以使用int a[10] = {0}进行代替
B,如果对数组的全部元素赋值,那么元素的个数是固定的,可以不指定数组的长度
int a[5] = {1,2,3,4,5}可以使用int a[] = {1,2,3,4,5}进行代替
二,二维数组
1,二维数组的定义
类型说明符 数组名[常量表达式][常量表达式]
注:
1)二维数组可以看成一个特殊的一维数组
例如 int a[3][4],a[0],a[1],a[2]看作是3个一维数组的名字
2)二维数组是按行进行存放的
2,二维数组的引用
1)数组名[下标][下标]
2)指针
3,二维数组的初始化
1)分行给所有的二维数组元素进行赋值
int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}}
2)将所有的数据写在一个打括号内,按数组元素在内存中的排列顺序对各元素赋值
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12}
3)对部分元素进行赋值
int a[3][4] = {{1},{2},{3}}
其余的元素值都是0
注:也可以对部分行进行赋值
int a[3][4] = {{1},{2}}
int a[3][4] = {{1},{},{3}}
4)可以对二维数组全部赋值或者部分赋值时,省略第一维的长度
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12}
int a[ ][4] = {1,2,3,4,5,6,7,8,9,10,11,12}
int a[ ][4] = {{1,2,3},{},{3,4,5}}
三,字符数组
在C99标准中,把字符类型归纳为整型类型中的一种
C语言中是没有字符串类型的,字符串是存放在字符型数组中的
1,如何定义字符数组?方法与定义整形数组是一样的
char c[10];
c[0] = 'I';
c[1] = ' ';
c[2] = 'a';
.....
c[9] = 'y';
I am happy;
2,字符数组的初始化
char c[10] = {'I',' ','a','m',' ','h','a','p','p','y'}
char c[]={"I am happy"}默认添加的有'\0'字符串结束标志
char c[]="I am happy"默认添加的有'\0'字符串结束标志
四,字符串的输入输出
1,%c逐个字符输入输出
2,将整个字符串一次输入或输出 %s
五,字符串处理函数
1,puts函数----字符串输出函数
char str[] = {"china\nbeijing"}
在输出时将字符串结束标志'\0'转换成'\n',即输出完字符串后换行
2,gets函数----输入字符串函数
gets(str);
从键盘输入:
Computer
将Computer送给字符数组str,注:送给数组的共有9个字符,而不是8个字符
3,strcat函数----字符串连接函数
strcat(字符数组1,字符数组2)
把连接的结果放在了第一个字符数组中
4,strcpy和strncpy函数----字符串复制函数
char str1[10],str2[]="china";
strcpy(str1,str2);
strncpy(str1,str2,2);将str2的前两个字符复制到str1的前两个字符中
注:C中,字符串不支持直接赋值,例如
str1="china";
str2 = str1;这种赋值方式是错误的
5,strcmp函数----字符串比较函数
6,strlen函数----字符串长度函数(字符串的实际长度)
7,strlwr函数----转换为小写的函数
8,strupr函数----转换为大写的函数
在使用上面的函数时候,需要加入头文件#include<string.h>
一,一维数组
1,一维数组的定义:
类型符 数组名[常量表达式]
注:1)常量表达式中可以包括常量和符号常量.int a[3+5]是合法的,int a[n]是不合法的,C语言不允许对数组的大小作动态定义
2)如果在被调用的函数(不包括主函数)中定义数组,起长度可以是变量或非常量表达式,可称为“可变长数组”
3)如果指定数组static(静态)存储方式,则不能用“可变长数组”
2,一维数组的引用
1)数组名[下标]
2)指针
3,一维数组的初始化
1)在定义数组的时候就对其赋初值
int a[10] = {0,1,2,3,4,5,6,7,8,9}
2)对数组中的部分元素赋值
int a[10] = {0,1,2,3,4}
那么,剩余的五个元素为默认值0
注:
A,如果对数组中的所有元素都赋值为0
int a[10] = {0,0,0,0,0,0,0,0,0,0}
可以使用int a[10] = {0}进行代替
B,如果对数组的全部元素赋值,那么元素的个数是固定的,可以不指定数组的长度
int a[5] = {1,2,3,4,5}可以使用int a[] = {1,2,3,4,5}进行代替
二,二维数组
1,二维数组的定义
类型说明符 数组名[常量表达式][常量表达式]
注:
1)二维数组可以看成一个特殊的一维数组
例如 int a[3][4],a[0],a[1],a[2]看作是3个一维数组的名字
2)二维数组是按行进行存放的
2,二维数组的引用
1)数组名[下标][下标]
2)指针
3,二维数组的初始化
1)分行给所有的二维数组元素进行赋值
int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}}
2)将所有的数据写在一个打括号内,按数组元素在内存中的排列顺序对各元素赋值
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12}
3)对部分元素进行赋值
int a[3][4] = {{1},{2},{3}}
其余的元素值都是0
注:也可以对部分行进行赋值
int a[3][4] = {{1},{2}}
int a[3][4] = {{1},{},{3}}
4)可以对二维数组全部赋值或者部分赋值时,省略第一维的长度
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12}
int a[ ][4] = {1,2,3,4,5,6,7,8,9,10,11,12}
int a[ ][4] = {{1,2,3},{},{3,4,5}}
三,字符数组
在C99标准中,把字符类型归纳为整型类型中的一种
C语言中是没有字符串类型的,字符串是存放在字符型数组中的
1,如何定义字符数组?方法与定义整形数组是一样的
char c[10];
c[0] = 'I';
c[1] = ' ';
c[2] = 'a';
.....
c[9] = 'y';
I am happy;
2,字符数组的初始化
char c[10] = {'I',' ','a','m',' ','h','a','p','p','y'}
char c[]={"I am happy"}默认添加的有'\0'字符串结束标志
char c[]="I am happy"默认添加的有'\0'字符串结束标志
四,字符串的输入输出
1,%c逐个字符输入输出
2,将整个字符串一次输入或输出 %s
五,字符串处理函数
1,puts函数----字符串输出函数
char str[] = {"china\nbeijing"}
在输出时将字符串结束标志'\0'转换成'\n',即输出完字符串后换行
2,gets函数----输入字符串函数
gets(str);
从键盘输入:
Computer
将Computer送给字符数组str,注:送给数组的共有9个字符,而不是8个字符
3,strcat函数----字符串连接函数
strcat(字符数组1,字符数组2)
把连接的结果放在了第一个字符数组中
4,strcpy和strncpy函数----字符串复制函数
char str1[10],str2[]="china";
strcpy(str1,str2);
strncpy(str1,str2,2);将str2的前两个字符复制到str1的前两个字符中
注:C中,字符串不支持直接赋值,例如
str1="china";
str2 = str1;这种赋值方式是错误的
5,strcmp函数----字符串比较函数
6,strlen函数----字符串长度函数(字符串的实际长度)
7,strlwr函数----转换为小写的函数
8,strupr函数----转换为大写的函数
在使用上面的函数时候,需要加入头文件#include<string.h>