数组总结

数组的创建

数组是一组相同类型元素的集合。
数组的创建方式:
type_t arr_name [const_n];
数组[]里的常量不能为0,不完全的数组化初始化,缺少的补0;
数组[]中只能给一个常量才可以,不能使用变量。

数组的初始化

数组的初始化是指,在创建数组的同时给数组的内容一些合理的初始值
比如
Int arr[10] = {1,2,3};
Int arr1[] = {1, 2, 3, 4};
char arr2[3] = {‘a’, ‘b’, ‘c’};//这个数组内没有\0结尾
Char a[] = “aasff”//这个数组最后是有\0的
数组的数组名是一个地址,是这个数组首元素的地址,而不是这个数组的首地址地址,而&数组名则代表的是数组的首地址
Int a[] = {0};
a != &a ;
a = &a[0];

!警告:数组名不能作为左值

因为编译器会认为数组名(a)作为做只代表时的意思是a的首元素的首地址,但是这个地址开始的一块内存是一个总体,我们只能访问数组的某个元素而无法当做一个整体来访问,所以我们可以将a[i]当做左值而无法把a当做左值。

一维数组

#include<stdo.h>
Int main()
{
Int arr[10] = {0};
Int i = 0;
For(i = 0; i < 10; i++)
{
    arr[i] = i;
}
For(i = 0; i < 10; i++)
{
   Printf(“%d”, arr[i]);
}
return 0;
}

数组是使用下标来访问的,下标是从0开始的
数组的大小可以通过计算得到
{
int arr[10];
Int x = sizeof(arr)/sizeof(arr[0]);
}
而且一维数组在内存中是连续存放的。并且是从低地址到高地址连续存储。
在数组中首元素的地址(arr+1) == 跳过这个元素;
数组的地址(&arr+1) == 跳过这个数组;

数组和指针的区别

其实数组与指针没有任何关系,数组是数组,指针是指针,
1.
指针:间接访问数据,首先是取得指针变量p的内容,把它作为地址,然后从这个地址提取数据或向这个地址提取数据,或在这个地址写入数据,指针可以以指针的形式访问*(p+i);
也可以以下标的形式访问p[i]’但其本质都是先取p的内容然后再加上。

数组:直接访问数据,数组名arr是整个数组的名字,数组内每个元素是没有名字的。只能通过“具名+匿名”的方式来访问某个数组元素,不能把数组当做整体来读写操作。数组可以以指针或下标的形式来访问,其本质都是数组首元素的地址。
2.
指针:通常用于动态数据结构;
数组:通常用于存储固定数目且数据类型相同的元素;
3.
指针:相关函数的malloc和free。
函数:隐式分配和删除。
4.
指针:通常指向匿名数据。
函数:自身即为数组名。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值