C语言基础 知识之数组,快速理解掌握数组

一、数组的定义:是一段连续内存空间,被分割成同样大小的单元(元素)
数组定义:
数据类型 数组名[数组元素个数]   如:int array[5];
数组名:表示数组的起始地址值
数据类型:表示数组元素类型,规定元素的空间大小,均匀分配内存.

数组空间大小=元素个数*元素数据类型大小

计算数组元素个数num=sizeof(array)/sizeof(array[0]);

二、静态数组:数组定义完毕,其大小不可改变,起始地址不能变
int array_a[5]={1,2,3,4,5};

//数组内存空间大小:

       // int类型,每个元素占四个字节    4*5=20

        printf("%d\n",sizeof(array_a));

三、数组地址问题

        //数组名是一个变量,表示集合
//输出数组每个元素地址值,可以发现,五个元素的地址分别相差4个字节
printf("%X\n",&array_a[0]);
printf("%X\n",&array_a[1]);
printf("%X\n",&array_a[2]);
printf("%X\n",&array_a[3]);
printf("%X\n",&array_a[4]);
//数组名表示是什么地址?
//数组名表示的数组第一个元素地址
printf("%X\n",array_a);
//&array_a  表示数组一段空间
printf("%X\n",&array_a);

printf("%X\n",array_a+1);//array+1: "1"表示单位,根据array_a 确定单位大小

printf("%X\n",(int)(array_a)+1);//数组起始地址就是整数编码值  (int)(array_a) 弱化成整数 "1"表示数字1

printf("%X\n",&array_a+1);//"1"表示整个数组空间大小


int i;
for(i=0;i<5;i++)
{
//printf("%d\n",array_a[i]);//array[i]表示数组元素值,两种写法,效果一样
printf("%d\n",*(array_a+i));//array+i表示元素地址值
}


int array_a[5];
int array_b[5]={1,2,3,4,5};
//array_a=array_b;//错误,数组名是一个只读变量,不能被赋值
//array[0]=array_b[0];//数组元素可以赋值
//array_a+1=array_b+1;//错误.数组元素地址固定,而且不会分配同一个地址给两个数组,不可以同时使用同一个地址
*(array_a+1)=*(array_b+1);//数组元素赋值
*(array_a)=*(array_b)+1;

四、数组初始化

    int array[3]={(2,3,4),(5,6,7)};//array[3]=4,7,0  这里考虑符号优先级以及结合方向逗号是右结合

    int array_1[]={1,2,3,45};

    int array_2[5]={1,2,3,45};

    //int array_3[3]={1,2,3,45};//错误,越界

    int array_4[9]={0};//数组元素值都为0


   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值