数组由一系列类型相同的数据对象(称作为数组的元素)排列组合而成
不同的数据对象(char int long float double等等)不能组成数组
声明数组:元素类型(char int long float double等等) 数组名[元素数量](gcc等编译器对c99支持的编译器之外的编译器元素数量不可以是变量)例如char ch[5]
变量的创建量过于大,于是就出现了数组
int arr[10]={1,2,3,4,5,6,7,8,9,0};//完全初始化
int arr[10]={1,2,3,4,5};//不完全初始化 输出1234500000
int arr2[]={1,2,3,4,5};就相当于int arr2[5];
char ch[5]={'s','i','x'};未定义的那剩余的2个输出0'\0'
char ch3[5]="six";(bit结尾系统会自带一个'\0')同上
char ch4[]="six";会输出4个元素(bit结尾系统会自带一个'\0')
char ch5[]={'s','i','x'};'会输出3个元素,因为是以集合形式,一个一个定义的
用printf打印ch5时会出现乱码,因为ch5内没有'\0'(电脑读取'\0'为字符串的结尾)就会随机出现乱码直到有'\0'为止
注意strlen求字符长度时需要以'\0'为基准
[]为下标引用操作符:会从0开始 arr[4]=5 以上面的int arr[10]为例
sizeof(arr[])就是求出括号里的东西所占的字节数sizeof(数组名)求出整个数组的字节数
一维数组在内存中的存储:打印地址需要用到%p(十六进制打印 0x加数字) 和&符号
1.一维数组在内存中连续存放!(说明在内存中寻找地址时,找到首元素就可以找到接下来的元素:将首位元素交给*p(应该是指针知识点) int*p=arr;//这样设置是因为数组名是每个数组的首元素 int i=0; for (i-0;i<10:i++){printf("%d",*p); p++;}hi打印出首元素和接下来的元素)
2.随着数组下标的增长,地址由低到高变化的(arr[0]--arr[9])