一、维数组
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在低地址处。
//如下图所示
C语言——初识数组  
 

#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;
}//向数组后越界导致循环,大致原理同上。

相关文章:

  • 2021-09-19
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-12-09
  • 2021-09-23
  • 2021-08-05
  • 2021-12-29
  • 2021-12-27
相关资源
相似解决方案