版权声明:本文为博主原创文章,未经博主允许不得转载。 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、
判断数据类型的方法
①确定它的属性(是否为数组、指针、函数等),挑选优先级最高的属性;
②如果指针,考虑指向的内容;
③如果是数组,考虑长度跟类型;
④如果是函数,考虑参数列表和返回值。