1.二维数组定义时为变量(int brr[3][4]表示行为3列为4的数组)。
使用时为下标(brr[1][2]表示二维数组中1行2列的数。
注:二维数组中行优先
int main()
{
int brr[3][4];
int crr[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
int drr[3][4] = {1,2,3,4,5,6,7,8,9,10};//不够的格子用0补******较常用
int err[][4] = {1,2,3,4,5,6,7,8,9,10}; //同上**一般
int brr[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};//定义时为长度
brr[2][2] = 100;//使用时为下标
}
2.二维数组常用的运算
(1) //输出brr的内容
for(int i=0;i<3;i++)
{
for(int j=0;j<4;j++)
{
printf("%d ",brr[i][j]);
}
printf("\n");
}
Show(brr);
(2)//将brr矩阵逆置到crr中
int crr[4][3];
for(int i=0;i<3;i++)
{
for(int j=0;j<4;j++)
{
crr[j][i] = brr[i][j];
}
}
printf("---------------\n");
for(int i=0;i<4;i++)
{
for(int j=0;j<3;j++)
{
printf("%d ",crr[i][j]);
}
printf("\n");
}
return 0;
}
3.一维数组和二维数组的数据类型
一维数组 int arr[4] | 数据类型 |
---|---|
arr | int*x |
arr+1 | int*x |
arr[0] | int x |
arr[0]+1 | int x |
二维数组 int brr[3][4] | 数据类型 |
---|---|
brr | int(*x)[4] (数组指针) |
brr+1 | int(*x)[4] (*的优先级低于[]) |
brr[0] | int *x(arr等同brr[0]) |
brr[0]+1 | int *x |
brr[0][0] | int x |
**4. 指针数组:存放指针的数组 , int *p[4]
数组指针:指向数组中的指针, int(*p)[4]
指针函数:返回为指针的函数, int f()
函数指针:指向函数的指针, int(f)()
5.arr:是数组名,表示数组首元素的地址
&arr:是数组的地址
/*
#include "stdio.h"
int main()
{
int arr[10]={0};
printf("arr+1=%p\n",arr+1);//00F3FD64
printf("&arr+1=%p\n",&arr+1);//00F3FD88
return 0;
}
//注:数组的地址+1,跳过整个数组的大小