数组
来源:互联网 发布:淘宝直播的货源怎么找 编辑:程序博客网 时间:2024/05/22 13:17
数组
一维数组
声明形式:
[存储类型说明符] [类型修饰符] 类型说明符 数组名[常量表达式]={初值表};
存储类型说明符:extern、static
类型修饰符:const、volatile 易变
类型说明符: int 、 char 、 …
数组名:是一个标识符,是一个地址常量,用以表示数组中打头元素的地址
int u[9]={ , 1, , ,2};//错误:缺省u[0], u[2]不是最后连续元素
**外部数组和静态数组的元素的缺省初值都是0
局部数组的初值则是随机的
int a[3]={1,2,3};
int b[4]={3,2,1,0};
//a=b;//错误,只能赋值元素,a,b是地址常量
//a=3;
printf("%p:%p,%p:%p\n",a,b,&a[0],&b[0]);
0x7fff5fbff7bc:0x7fff5fbff7a0,0x7fff5fbff7bc:0x7fff5fbff7a0
相当于:a=&a[0],b=&b[0]
//地址的特例
#include <stdio.h>
int main()
{
int a = 0x12345678;
char *pc = (char *)&a;
printf("%x:%x:%x:%x\n",pc[0],pc[1],pc[2],pc[3]);
return 0;
}
//打印结果:78:56:34:12,intel的小端模式
int a[];//错误
int a[]={};//特殊的定义格式,正确,随机生成数据
//int b[][]={{3,2,1},{0,5,6},{1,1,1}};//错误,数组第一个下标不可省略
//int b[][3]={};//正确
//int b[3][3]={{3,2,1},{0,5,6},{1,1,1}};//正确
//int b[3][]={};//错误
数组与指针的联系:
char c[4]={1,2,3,4};
printf("%d\n",c[0]);//取值
printf("%d\n",*(c+0));//取值
printf("%p\n",&c[0]);//取地址
printf("%p\n",c+0);//取地址
0 0