二维数组

定义二维数组:
	a[3][4];意思就是有3个一维数组,每个一维数组有四个字符;相当于三行四列。
	
	//注意这里用的是从第0行开始,对应数组的下标
	二维数组的a[0]代表的是第0行的一维数组,a[1]代表的是第1行的一维数组...
	a[0][1],0行,第1列的数据,a[1][2]1行,第2列的数据	

	//二维数组的类型
	例如int a[3][4]的数组类型就是:int  [3][4]
	sizeof(a) = sizeof(int [3][4]) 
  1 #include <stdio.h>                                                                                          
  2 int main ()                                                                     
  3 {                                                                               
  4     int a[4][5];                                                                
  5                                                                                 
  6     //存放的是整个数组的大小,就是整个数组占据多少字节                           
  7     int num;                                                                    
  8     num = sizeof(a);                                                            
  9     printf("num = %d\n",num);                                                   
 10                                                                                 
 11     num = sizeof(int [4][5]);                                                   
 12     printf("num = %d\n",num); //int [4][5]是二位数组的类型                      
 13                                                                                 
 14     //求二维数组总共有多少个元素以及行数和列数                                  
 15     int cnt, line, cline;                                                       
 16     cnt = sizeof(a)/sizeof(a[0][0]);                                            
 17     printf("cnt = %d\n",cnt);                   // 80/4 = 20 总的元素的个数,   
 18                                                                                 
 19     line = sizeof(a)/sizeof(a[0]);              //总的大小除以每行的大小,就是多少行
 20     printf("line = %d\n",line);                                                 
 21                                                                                 
 22     cline = sizeof(a[0])/sizeof(a[0][0]);       //一行的大小除以每个元素的大小,就是多少列 
 23     printf("cline = %d\n", cline);                                              
 24                                                                                 
 25     //填充数组                                                                  
 26     int i,j;                                                                    
 27     for(i=0; i<4; i++)                                                          
 28         for(j=0; j<5; j++)                                                      
 29             a[i][j] = rand()%99; //0-98随机数
 30                                                                                 
 31     //遍历数组                                                                  
 32     for(i=0; i<4; i++)                                                          
 33     {                                                                           
 34         for(j=0; j<5; j++)                                                      
 35         {                                                                       
 36             printf("a[%d][%d] = %d     ",i,j,a[i][j]);                          
 37         }                                                                       
 38         printf("\n");                                                           
 39     }                                                                           
 40                                                                                 
 41     int (*p)[5];  //这是一个指针,而且是数组指针,这个数组里面含有5个元素,数组的类型为int [5]
 42     p = a;                                                                      
 43     /*                                                                          
 44      像p+1的话,这样的就是指向第一行的数组,得到的是第一行的首地址,移动的字节	       数是20个字节
 45      */                                                                         
 46     printf("%d\n", sizeof(*(p+1))); //移动一行,每行5个元素,是int类型,所以是20个字节
 47                                                                                 
 48     //利用指针得到每个具体元素的值,例如第二行第三个数的值的大小(是从第0行第0列开始的)
 49     int data = *(*(p+2)+3); //得到的就是a[2][3] 大小                            
 50     printf("data = %2d\n",data);                                                
 51                                                                                 
 52 }  
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值