C语言——初识数组

一、 维数组
1.一维数组的创建和初始化
数组的创建>:  
常见的数组类型有int、char、指针类型(指针数组还有不太常见的数组指针数组等等);
数组的格式创建为 :  数组成员类型+数组名+[元素的个数] ;
(元素个数可以不写,但是必须初始化,数组大小为初始化后的大小)
数组的初始化>:
eg1:int [3]={1,2,3};
eg2:int [3]={1,2};
eg3:  int * arr[ 3 ]={p1,p2}   //p1,p2为整形指针;
       //若未完全初始化数组,如(eg2;),则剩余数组内容为0,字符类型为(‘\0’)(即0)
       //指针类型为随机值,如(eg3);
       //若没有初始化数组,数组内容为随机值
eg4: char s1[ ]="abcd";
eg5: char s2[ ]={ 'a' ,'b' ,'c' ,'d' ,'\0' };
//字符串数组初始化    eg3==eg4;
//用 “ ”   对字符串进行操作,代表字符串数组初始化,在字符串后自动加 ‘\0’ ;

3.一维数组的存储
数组存储首先是==>开辟数组相应的大小空间==>然后按照下标从小到大依次储存==>储存时从低地址处向高地址处依次对数组进行储存;
4.一维数组的指针访问
数组名代表数组首元素地址,通过数组名和整数的加减就可以实现通过指针对数组进行访问。

二、维数组
1.二维数组的创建和初始化
二维数组和一维数组大致相同,但是二维数组中的单个元素为数组,元素数组的大小为第二个方括号内值的大小。
//如 int a [2][3];   其实这个二维数组含有两个元素,每个元素为int [3]  (大小为三个整形空间的一维数组);
2二维数组的存储
二维数组存储与一维数组大致相同.
如int a[2][3];  从低地址到高地址依次储存,元素数组的内容也是依次从低地址到高地址储存;
3二维数组的指针访问
数组名代表数组首元素地址,数组首元素为一维数组。
a[1][1]= *(*(a+1)+1
//  *(a+1 )  为 拿到二维数组首元素数组 的首元素地址;
// *(a+1)相当于一维数组的数组名

数组越界的相关越界:
#include<stdio.h>
int main()
{
 int arr[10];
 int i = 0;
 for (i = 0; i <= 12; i++)
 {
  arr[9-i] = 0;
  printf("ha,ha");
 }
 system("pause");
 return 0;
}
//向数组前越界导致循环     
//栈在内存分配上从高地址向低地址分配,先创建数组,后创建变量 i;变量i在低地址处。
//如下图所示
  
 

#include<stdio.h>
int main()
{
 int i = 0;
 int arr[10];
 for (i = 0; i <= 12; i++)
 {
  arr[i] = 0;
  printf("ha,ha");
 }
 system("pause");
 return 0;
}//向数组后越界导致循环,大致原理同上。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值