1.数组的创建
数组是一组相同类型元素的集合,创建方式为:
type-t arr-name 【const-n】
数组元素类型 名字 一个常量表达式,用来指定数组的大小
2.数组的初始化
指在创建数组的同时给数组的内容一些合理初始值(初始化)
int main()
{
int arr1[10] = { 1,2,3 };//不完全初始化,剩下的元素默认为0
char arr2[5] = { 'a','b' };//有三个元素默认为0
char arr3[5] = "ab";//有两个元素默认为0,因为这样自带‘\0’,占一个元素位
return 0;
}
3.数组的大小
区别sizeof和strlen
char arr4[] = "abcdef";
printf("%d", sizeof(arr4)); //sizeof是计算arr4所占空间的大小(包括‘\0’) 7
printf("%d", strlen(arr4)); //strlen是计算arr4字符串的长度(到'\0'停止) 6
char arr5[] = { 'a','b','c' };
printf("%d\n", sizeof(arr5)); //没有‘\0’ 3
printf("%d", strlen(arr5)); //由于缺乏'\0',故长度的计算不会停止 随机值
1.strlen只能求字符串的长度{要引用#include<string.h>}
2.siaeof能计算变量,数组,类型的大小(单位是字节,属于操作符,无需引用头文件)
4.一维数组在内存中的存储
1.一维数组是连续存放的
5.二维数组的创建和初始化
1.创建
二维数组也是连续存放的
2.初始化
3.域宽
在输出时,%m.n--->
m表示输出占m列,但只取字符串中左端n个字符
输出时右对齐,左补空格
m可以省略
6.作为函数参数
例子:数组数字有序排列
void popo(int* arr,int a)
{
int b, c, d,e,f;
for (b = 0;b < a-1; b++)
{
//int f = 1;
for (e = 0; e < a-1; e++)
{
if (arr[e] > arr[e + 1])
{
c = arr[e];
arr[e] = arr[e + 1];
arr[e + 1] = c;
//int f = 0;
}
}
//if (f == 1)
//break;
}
for (d = 0; d < a; d++)
{
printf("%d ", arr[d]);
}
}
int main()
{
int arr[] = { 8,4,6,2,9,4,5};
int a = sizeof(arr) / sizeof(arr[0]);
popo(arr,a);
return 0;
}
7.数组名
int main()
{
int arr[] = { 1,2,3 };
printf("%p\n", arr);
printf("%p", &arr[0]);
//结果一样
return 0;
}
数组名就是首元素地址
例外
1.sizeof(arr)--->sizeof中的数组名代表的是整个数组,计算数组大小的单位是字节
2.&arr ---->&数组名取出的是整个数组
printf("%p",&arr); 的值和 printf("%p\n", arr);
printf("%p", &arr[0]); 一样,但代表的意义不一样