数组
这里我们就通俗易懂的来总结一下数组,简单来说,数组就是
1)相同数据类型的集合
2)内存(内部存储器:运行) 开辟一块连续的内存空间
1、数组定义
语法:<类型> 数组名 [<元素数量>] eg:int arr[5];
数组名含义:arr表示数组首元素地址 arr<=>&arr[0] 是一个常量
注意!此处[]中元素数量必须为大于0的整型常量表达式!!!
eg:int arr[n];//err
int arr[1.2]//err
int arr[1+2]//true
int arr['a'];//true 此处a的ascii码值为97
实例:设计一个包含有10个int 元素的一堆数组
1)int arr[10];数组中元素为随机值
2)int arr[10]={1,2,3,4,5,6,7,8,9,10};设计10个整形元素的一维数组
int arr[10]={1,2,3};部分初始化 其余类型默认值 零
int arr[10]={}; 10个类型的默认值
2、数组的遍历
for(int i=0;i<6;i++)
printf("%d",arr[i]);
3、数组的长度
当数组名的使用 与 就近数组名的定义在同一个作用域 数组整个大小可以用sizeof();来计算,此处sizeof();不是函数调用,是运算符,求占用内存大小
int len=sizeof(arr)/sizeof(arr[0]);//计算数组长度公式
字符数组(有'\0'做结尾为字符串数组,没有的为字符数组)
初始化方式:
1.逐个字符初始化
如:char str[5]=['h', 'e', 'l', 'l', 'o'];
若初值个数小于数组长度,其余元素自动为'/0'。
长度计算:int len =sizeof(str)/sizeof(str[0]);
2.用字符串常量初始化
char str[]=“hello”;//系统会自动在末尾加上'/0'作为结束标志,此时数组实际占用空间比双引号内字符数多一。
字符串有效长度:(头文件#include<string.h>)
strlen();实现原理:从数组起点开始统计到'\0'结束('\0')前有效字符个数;
eg:strlen("hello\0abc")--->5;
sizeof();和strlen();区别在于:前者会包含'/0',后者不会。
3.字符与字符串的获取
3.1输入一个字符
char val;
scanf("%c",&val);
或者 char val=getchar();
3.2输入字符串
1)scanf函数
char buff[100];
char arr[100];
scanf("%s%s",buff,arr);地址取不取都可以
默认以空格或者换行分割字符串
2) gets 函数(不推荐): gets(str) 可读取字符串,遇到回车停止,它会将换行符丢弃 。但由于存在缓冲区溢出风险(不检查输入长度),已不推荐使用。