概念
整形数组
定义格式
存储类型 数据类型 数组名[元素个数];
eg:int a [10];
数组名:代表数组首地址,符合标识符命名规则,在同一个函数中,数组名不能同其他变量同名。(注意:地址常量不能被赋值,arr++;错误)
访问元素:数组名[下标]。下标从0开始,如果有n个元素,下标范围:0~n-1(注意数组越界)
特点
数据类型相同
内存连续
初始化
全部初始化
int arr[5]={1,2,3,4,5};
部分初始化
为赋初值的元素值为0
int arr[5]={1,2,3};// 1 2 3 0 0
未初始化
元素值为随机值
int arr[5];
定义空数组
int a[5]={0,0,0,0,0};
int a[5]={0};
int a[5]={};
引用
1.必须先定义后引用
2.每次只能引用一个元素a[i],如果想要引用所有元素需要循环遍历
3.引用数组元素防止数组越界
4.打印地址用"%p"
数组遍历
把下标当作循环变量,for循环遍历
int arr[5]={};
int i;
for(i=0;i<5;i++)
scanf("%d",&arr[i]);
for(i=0;i<5;i++)
printf("%d\n",arr[i]);
数组大小
数组大小 = 元素个数 * 数据类型的大小
数组大小 = sizeof(数组名)
计算数组元素个数
直接观察
数组大小 / 数据类型大小 = 数据元素个数
sizeof(a)/sizeof(int)
sizeof(a)/sizeof(a[0])
清零函数
1.bzero
#include <strings.h>
void bzero(void *s, size_t n);
功能:将内存空间设置为0
参数:s:要清空空间的首地址
n:要清空的字节数
返回值:无
2.memset
#include <string.h>
void *memset(void *s, int c, size_t n);
功能:将内存空间设置为0
参数:s:要清空内存的首地址
c:要设置的值,置0,其他无法实现
n:字节大小
返回值:要清空内存的首地址
字符数组
概念
字符数组就是元素数据类型为字符型的数组
三种形式
1.char a[]={'a','b','c'};//按字符赋值sizeof(a)=3
2.char b[]={"abc"};//字符串赋值sizeof(b)=4
3.char c[]="abc";//字符串赋值sizeof(c)=4
字符串的输入输出
char s[32]={};
输入
1.scanf("%s",s);//注意遇到空格和\n都会认为字符串输入结束
2.scanf("%[^\n]",s);//直到遇到\n结束可以输入空格
3.for循环
for(i=0;i<32;i++)
scanf("%c",&buf[i]);
4.gets
char *gets(char *s);
功能:从终端获取字符串
参数:s:目标字符数组首地址
返回值:同参数
//使用时会报警告,因为不检查数组越界
输出
1.printf("%s\n",buf);
2.for(i=0;i<32;i++)
printf("%c",buf[i]);
3.puts
int puts(const char *s);
功能:向终端输出字符串
参数:要输出的字符数组的首地址
返回值:输出字符的个数