什么是数组

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 开始,在打印数组 元素 数要注意数组的初始化不要把位初始化的元素打印出来。


数组的不完全初始化

整形

一维数组_字符串_02

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 

一维数组_i++_03


字符形
int main()
{
char arr[10] = { 'l','i','n','g'};
printf("%p", arr);//打印数组首元素的地址
return 0;
}

一维数组_字符串_04


字符串形

注意字符串的结束标志在数组中存储的方式

int main()
{
char arr[10] = "ling";\\以字符串的形式输入
printf("%p", arr);//打印数组首元素的地址
return 0;
}

一维数组_i++_05


浮点型
int main()
{
double arr[10] = { 1,2,3,4,5 };
printf("%p", arr);//打印数组首元素的地址
return 0;
}

一维数组_数组_06


使用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;
}

一维数组_i++_07

一维数组_字符串_08

一维数组_字符串_09

'\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;
}

一维数组_数组_10


注意这次打印,\0以空格的形式出现,超出字符串的范围以 ?? 的形式出现

一维数组_字符串_11

求字符串的长度

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 。


一维数组_i++_12

"空格"也是字符串

" 空格 "=’空格’+‘\0’。空格在ASCII码值为32

一维数组_字符串_13

综合使用
int main()
{
char arr[] = "ling song";
int i = 0;
for (i = 0; i < strlen(arr); i++)
{
printf("%c\n", arr[i]);
}
return 0;
}

去字符串长度方法 

一维数组_数组_14

求整形数组元素多少 

一维数组_字符串_15

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;
}


一维数组_i++_16

整形数组两个元素之间相差 4bit ,正好对应一个int向内存申请的空间 4byte