什么是数组
typ_t arr_name [const_n]
code
typ_t //是指数组的元素类型
code
arr_name//名称 ?? 变量还是常量
code
const_n// const 常量表达式,用来指定数组的大小
万物皆可分类 将相同或类似的元素组合在一起形成模块,方便使用和查找。数组就是模块中的一种分类罢了,数组的诞生就是方便查找,方便使用的。
数组的创建
int main()
{
int arr[10] = { 1, 2, 3, 4, 5, 6 };
printf("%p", arr);
return 0;
}
数组初始化
在数组向内存申请空间创建数组的时候必须告诉内存一个准确的值, [ const_n ] 里就是整形常量,而不能是整形变量但是在使用数组下标求数组值时 数组的下标可以是 整形变量
int main()
{
double arr[10] = { 1,2,3,4,5 };
int i = 0;
for (i = 0; i < 10; i++)
{
printf("%f\n", arr[i]);
}
printf("%p\n", arr);//打印数组首元素的地址
return 0;
}
数组的下标
数组的 下 标 从 0 开始,在打印数组 元素 数要注意数组的初始化不要把位初始化的元素打印出来。
数组的不完全初始化
整形
int main()
{
int arr[] ={1,2,3,4};
int i = 0;
for (i = 0; i < 10; i++)
{
printf("%d\n", arr[i]);
}
printf("%p\n", arr);//打印数组首元素的地址
return 0;
}
为什么超出范围的数用 -858993460?? 输出
2^33 差 8bit
字符形
int main()
{
char arr[10] = { 'l','i','n','g'};
printf("%p", arr);//打印数组首元素的地址
return 0;
}
字符串形
注意字符串的结束标志在数组中存储的方式
int main()
{
char arr[10] = "ling";\\以字符串的形式输入
printf("%p", arr);//打印数组首元素的地址
return 0;
}
浮点型
int main()
{
double arr[10] = { 1,2,3,4,5 };
printf("%p", arr);//打印数组首元素的地址
return 0;
}
使用ASCII码替代字符
注意字符在存入内存时是以ASCII码为参照以 二进制 数字 存入的
int main()
{
char arr[10] = {'a','b',65,66};\\以字符的形式输入
int i = 0;
for (i = 0; i < 10; i++)
{
printf("%c\n", arr[i]);
}
printf("%p\n", arr);//打印数组首元素的地址
return 0;
}
'\0'也是字符
字符串存入数组中时要把\0算上占用一个空间,所以\0是字符串的 结束标志 。但是在求字符串长度时\0是不算入字符串长度的。
int main()
{
char arr[] = "ling";
int i = 0;
for (i = 0; i < 10; i++)
{
printf("%c\n", arr[i]);
}
printf("%p\n", arr);//打印数组首元素的地址
return 0;
}
注意这次打印,\0以空格的形式出现,超出字符串的范围以 ?? 的形式出现
求字符串的长度
int main()
{
char arr[] = "ling";
printf("%d\n", sizeof(arr));
printf("%d\n", strlen(arr));
printf("%p\n", arr);//打印数组首元素的地址
return 0;
}
sizeof(arr)--操作符
计算变量 ,数组,类型的大小单位
计算 arr 所占内存空间的大小,包括 \0
char 类型占用内存的大小是 1byte
strlen(arr)--库函数
计算 arr 中字符串的长度,不包括\0。 \0 在这里起到字符串结束的标志。
只能计算字符串长度
code
char arr[ ]={'l','i','n','g'};
code
printf("%d",strlen(arr));
不是说strlen只求字符串的吗?字符串也是以字符的形式存入的只是多了一个 \0 。
"空格"也是字符串
" 空格 "=’空格’+‘\0’。空格在ASCII码值为32
综合使用
int main()
{
char arr[] = "ling song";
int i = 0;
for (i = 0; i < strlen(arr); i++)
{
printf("%c\n", arr[i]);
}
return 0;
}
去字符串长度方法
求整形数组元素多少
arr[ ]表示数组的下标
arr[]只代表数组中的一个元素。
一维数组元素地址存入方式
int main()
{
int arr[] = { 1,2,3,4,5,6,7 };
int sz = sizeof(arr) / sizeof(arr[0]);
int i = 0;
for (i = 0; i < sz; i++)
{
printf("%p\n", &arr[i]);
}
printf("\n%p\n", arr);//打印数组首位元素地址
return 0;
}
整形数组两个元素之间相差 4bit ,正好对应一个int向内存申请的空间 4byte