一、定义:相同数据类型的集合,一片连续的内存空间,所存放的数据类型一样。
数组的使用:
定义一个数组:
数据类型 数组名[数组的长度]
数组名的含义:
①数组名代表整个数组 sizeof(array);
int array[4];
printf("数组长度为:%d\n",siezof array);
输出结果为:12 一个int型4字节,array表示整个数组
printf("array address:%p\n",array);
输出结果为基地址(起始地址,连续内存的首地址)
②数组名代表数组的基地址(连续的内存地址的起始地址)。
int array[4];
printf("array addres:%p\n",&array);
输出结果为:整个数组的首地址
③数组名+[ 0 ]代表数组元素的地址
int array[4];
printf("array addres:%p\n",&array[0]);
输出结果为数组首元素的地址
在通个程序中,以上三种地址都一样,但是代表的意思是不同的。
二、数组的赋值使用
①定义时赋值:
②定义时未赋值
三、数组的调用
char h[4]={'a','b','c','d'}; //字符数组
char *q=h[0];
int n[5]={1,2,3,4};
char m[10]={"hello"};
char t[10]="hello"; //字符串数组
int p[5]={[0 ... 1]=1,[3 ...4]=0};
int r[7]={3,2,[5]=8};
printf("h的长度为:%d\n",sizeof h);
printf("n的长度为:%d\n",sizeof n);
printf("h的元素:%c\n",q); //首地址
printf("h的元素:%c\n",h[1]); //第二个元素地址
printf("%s\n",&m[0]);
printf("%s\n",&m);
printf("t:%s\n",t);
for (int i = 0; i < 7; i++)
{
printf("r数组有元素:%d\n",r[i]);
}
for (int i = 0; i < 6; i++)
{
printf("n数组有元素:%d\n",n[i]);
}
for (int i = 0; i < 5; i++)
{
printf("p数组有元素:%d\n",p[i]);
}
输出:
四、例:
例:将字符串hello转换为123456
#include <stdio.h>
int main(void)
{
char str[10]="hello";
printf("str:%s\n",str);
for (int i ='1' ; i < '7'; i++)
{
str[i-49]=i;
}
printf("str:%s\n",str);
return 0;
}
输出结果为:
str:hello
str:123456