C语言----(二维数组,复杂数据类型的判断)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_41026740/article/details/79683462

一、二维数组的定义赋值

1、定义一个三行四列的二维数组,如下:
int arr[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
int brr[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
//数组arr与brr的初始化相同,但最好使用brr

int crr[3][4] = {1,2,3,4,5}; 
//行优先,即第0行元素分别为1、2、3、4,第1行第一个元素为5,其余元素均为0

int drr[][4] = {1,2,3,4,5,6,7,8,9,10};
//第一个[ ]里默认为3,第二个[ ]里的4不能省
注:如果对全部元素都赋初值(即提供全部初始数据),则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。
2、输出数组brr[3][4]的值,代码如下:
#include <stdio.h>

int main()
{
	int brr[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
	for(int i=0; i<3; i++)
	{
	   for(int j=0; j<4; j++)
	   printf("%d ",brr[i][j]);
	   printf("\n");
	}
	return 0;
}

3、int brr[3][4];
   brr表示数组的第0行;
   brr + 1表示数组的第1行;
   brr[1] 相当于 &brr[1][0];

  可以理解为: 二维数组其实是一个包含数组的数组, 即数组的每一个元素还是一个数组。

二、复杂数据类型的判断
简单例子如下:
//定义一个一维数组
int arr[4];
                               //此列表示类型
arr //数组首元素的地址            int *
arr + 1                           int *
arr[1]                            int
arr[1] + 1                        int

//定义一个二维数组
int brr[3][4];

brr                               int (* brr)[4] //数组指针
brr + 1                           int (* brr)[4] 
brr[1]                            int *
brr[1] + 1                        int *
brr[1][1]                         int
brr[1][1] + 1                     int

1、数据类型的判定
对于复杂的数据类型,先看优先级。

为了帮助理解,简单例子如下: 
int (*p) [4]             数组指针(数组的指针)
 int  *p [4]              指针数组(保存整型指针的数组)

 int (*p) ()               函数指针 (指向函数的指针)
 int *p ()                 指针函数(返回指针的函数)

2、 判断数据类型的方法
①确定它的属性(是否为数组、指针、函数等),挑选优先级最高的属性;

②如果指针,考虑指向的内容;

③如果是数组,考虑长度跟类型;

④如果是函数,考虑参数列表和返回值。

猜你喜欢

转载自blog.csdn.net/qq_41026740/article/details/79683462