C语言基础之整型数组(一维和二维)-笔记六

一、一维数组
1、数组概念
(1)数组定义:一组有序的、类型相同的数据的集合。
(2)数组名:数组的名字,数组名代表数组的起始地址。
(3)数组元素:索引或下标标识,索引或下标从0开始。
(4)数组长度: 只能是常量和常量表达式(大于0)。
(5)数组在内存中的存放: 存放时先存放到低字节,再存到高字节。每个数据元素占用的字节数,就是基类型的字节数,一个元素占4个字节
2、整型数组初始化
(1) extern和static数组元素自动初始化为0。
(2)数组初始化是在数组定义时给元素赋初值
(3)一般形式:类型 数组名[常量表达式]={值,值…};
(4)数组初始化时注意点:
  ①元素之间用逗号隔开;如:int ary[10]={1,2,3};
  ②可以只给部分元素赋值,剩余元素赋0值;int ary[10]={0,1,2,3,4,5,6,7,8,9};
  ③给全部元素赋值时,可以不说明元素的个数;如:int ary[ ]={0,1,2,3,4,5,6,7,8,9}
  ④初始化的数据个数允许少于数组的长度,但不能多于数组的长度
(5)数组初始化示例
--1)一般初始化
   #include 
   int main()
   {
       //数组初始化方式1
       int ID[3];
       ID[0]=1;//下标=数组元素个数-1
       ID[1]=2;
       ID[2]=3;
       printf("%d%d%d\n",ID[0],ID[1],ID[2]);
       //数组初始化方式2
       int ID[3]={1,2,3}; 
       printf("%d%d%d\n",ID[0],ID[1],ID[2]);
       return 0;
   }
--2)for循环初始化
   #include  
   int main()
   {
       char alpha[26]; 
       int ary[10];
       int i, j; 
       for(i = 65,j = 0; i < 91; i++,j++) 
        { 
 	    alpha[j] = i; 
	    printf("The character is %c \n", alpha[j]); 
	} 
       for ( i = 0; i < 10; i++) 
        {
    	    scanf("%d",&ary[i]); 
        }
       return 0;
   }

 

3、整型数组元素引用--元素地址输出
   #include 
   int main()
   {
       int ID[3]={1,2,3};//数组初始化
       int i;//i可先定义,在for循环内定义有可能报错
       for(i=0;i<3;i++)
	{
	  printf("%p\n",&ID[i]);//%p 表示输出的结果是指针(即变量的地址值)
	}
       return 0;
   }
   运行结果:
   0019FF34
   0019FF38
   0019FF3C
   结果说明,一个int数组元素占4字节,数组元素地址相差4Byte,若换为double型,则数组地址相差8Byte。

 

4、使用
(1)允许使用变量的地方都可以使用数组元素
(2)可以使用整型表达式引用数组的元素:如--数组名[整型表达式]
   普通变量赋值: int b; b=5;
   数组变量赋值:int a[4]; a[2]=5;
(3)数组名代表数组首地址,故可不必再加&,加也可以。
(4)不能直接将一个数组赋给另一个数组,不能为数组整体赋值。

 

二、二维数组
1、二维数组概念
   可看成是由两个一维数组组成的数组,类似于一个由行和列组成的表格
2、声明 类型说明符  数组名[常量表达式1][常量表达式1];
   例如:int temp[4][3];
3、二维数组的初始化
   数据类型 数组名[常量表达式1][常量表达式2]={初始化数据}
(1)分行给二维数组赋初值。
   如: int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
(2)可以将所有数据写在一个花括弧内,按数组排列的顺序对各元素赋初值。
   如: int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
(3)可以对部分元素赋初值。
   如:int a[3][4]={{1},{5},{9}};    
   如:int a[3][4]={{1},{0,6},{0,0,11}};//对各行中的某一元素赋初值
   如:int a[3][4]={{1},{5,6}};//只对某几行元素赋初值。
(4)如果对全部元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。
   如:  int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
   等价:int a[ ][4]={1,2,3,4,5,6,7,8,9,10,11,12};
(5)在定义时也可以只对部分元素赋初值而省略第一维的长度,但应分行赋初值。如:int a [][4]={{0,0,3},{},{0,10}};

4、二维数组引用
(1)存储形式
   二维数组在内存中是按行的顺序存放的,即先存放第一行的元素,再存放第二行的元素。
   a[0][0] a[0][1] a[0][2] a[0][3] a[1][0] a[1][1] a[1][2]…
(2)引用格式
   数组名[行下标][列下标]  例如:ary[1][3] = 12;
(3)示例
--1)数组打印输出0到8
   #include 
   int main( )
   { 	
       int a[3][3]={0,1,2,3,4,5,6,7,8};
       int i=0,j=0;
       for(i=0;i<3;i++)
	{
	   for(j=0;j<3;j++)
	    {
		printf("b[%d][%d]=%d ",i,j,a[i][j]); 
	    }
	   printf("\n");
	}
       return  0;
  }
--2)数组默认初始化,打印输出0到8
   #include 
   int main( )
   { 	
       int a[3][3]={0};
       int i=0,j=0,temp=0;
       for(i=0;i<3;i++)
	{
	   for(j=0;j<3;j++)
	    {
		a[i][j]=temp;
		temp+=1;
		printf("b[%d][%d]=%d ",i,j,temp-1); 
	    }
	   printf("\n");
	}
       return  0;
   }
   运行输出:
   b[0][0]=0 b[0][1]=1 b[0][2]=2
   b[1][0]=3 b[1][1]=4 b[1][2]=5
   b[2][0]=6 b[2][1]=7 b[2][2]=8
编辑 2020-4-24 23:37
注:本文旨于作为自己的学习笔记,不作他用。

 

 

 

 

 

 

你可能感兴趣的:(C语言基础,c语言)