1:数组定义
int main()
{
int a[10]={};
for(int i=0;i<strlen(a);i++)//strlen计算长度
{
scanf("%s",&a[i]);
}
for(int i=0;i<strlen(a);i++)
printf("%c\n",a[i];
}
注释:数组名代表数组首地址,第一个地址元素,是一个常量,不能够被赋值
数组表达式中可以包含常量和符号常量,即宏定义,不包含变量
数组元素的访问:
int main()
{
int a[5]={1,2,3};
printf("%d\n",a[1]);
}
第一个元素的访问:a[0]
第n个元素的访问:a[n]
数组越界:当定义数组为int类型a[5]时,其元素的访问包含a[0],a[1],a[2],a[3],a[4];超出其限定范围例如:a[5]则视为越界
int main()
{
int a[3]={4,5,6,1);数组越界
a[3]=10;//数组越界
}
3:初始化以及数组大小的计算:
注释:部分初始化时,未初始化部分为0
数组地址印:%p
3.1:数组大小计算:
int main()
{
int a[5]={1,2,3,4,5};
printf("%d\n",sizeof(a));//数据类型*元素个数
}
斐波那契数列前15项并逆序输出:
int main(int argc, char const *argv[])
{
int a[15] = {1, 1};
for (int i = 2; i < 15; i++)
{
a[i] = a[i - 1] + a[i - 2];
}
for(int i=14;i>=0;i--)
{
printf("%d\t",a[i]);
}
for (int i = 0; i < 15; i++)
printf("%d ", a[i]);
printf("\n");
return 0;
}
清零函数:
bzero()函数:
功能:将内存空间设置为0
参数: s: 要清空的空间首地址
n: 字节大小
返回值:无
m
e
m
s
e
t
(
)
函数
功能:将指定内存空间内容设置为0
参数:s:指定内存首地址
c:要设置的数,一般为0
n:要设置的内存大小
int main()
{
int a[6]={1,2,4,5};
bzero(a,sizeof(a));//从首地址开始,sizeof(a)个字节清零
bzero(&a[2],sizeof(int)*4);//从a[2]开始,sizeof(int)*4个字节清零,即除去a[2]前已使用的字节
memset(a,0,sizeof(a));
for(int i=0;i<6;i++)//遍历
printf("%d\n",a[i]);
}
数组内存分配:
数组再内存中分配如下图:
取内容:a[4]的值相当于*(a+4)
5:字符数组的输入和输出
char a[5]={'a','d','r','f'};//sizeof(a)=5
char s[]="hello";//sizeof(s)=6 包含\0
char a[]={}//错误。定义时不赋值则不能省略元素个数
输入:char *gets(char *s);
输出:char *puts(char *s)
char a[10]={};
gets(a);//结尾加\0,不会接收到回车
puts(s);//在结尾自动加回车
char s[10]={};
s[10]="hello"; //错误,数组越界,给字符数组元素赋值不能用字符串
s="hello"; //错误,s地址常量,不能为左值
strcpy(s,"string"); //正确