您的位置:首页 > 编程语言 > C语言/C++

C语言——初识数组

2017-10-09 21:44 344 查看
一、一维数组
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;

}//向数组后越界导致循环,大致原理同上。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: