#include <malloc.h>
#include <string.h>
#include <ctype.h>
#include "stdio.h"
/**
*
* 多维数组 :
* @return
*/
int main1() {
char a[3][4]={"111","1sf"};
for(int i=0;i<3;i++){
for(int j=0;j<4;j++){
printf("%c",a[i][j]);
printf("%c",*(*(a+i)+j));
}
}
/**
* 多维数组名的杯子 数组指针 ,步长 一维的长度
* (a+i) 代表是整个第i行的地址 二级指针
* *(a+i)代表一级指针 第i行的首地址
* *(a+i)+j 《====>>& a[i][j]
* a 第一行的地址和第一行的首地址是重叠的
*
*/
}
void printArr(char a[3][4]){
for(int i=0;i<3;i++){
for(int j=0;j<4;j++){
printf("%c",a[i][j]);
}
}
}
/**
* 多维数组退化
* @param a
*/
void printArr2(char a[][4]){
for(int i=0;i<3;i++){
for(int j=0;j<4;j++){
printf("%c",a[i][j]);
}
}
}
/**
* 多维数组退化
* @param a
*/
void printArr3(char (*a)[4]){
for(int i=0;i<3;i++){
for(int j=0;j<4;j++){
printf("%c",a[i][j]);
}
}
}
/**
* 等价关系
* 数组参数 等效的指针参数
* 一维数组 char a[30] 指针 char *
* 指针数组 char *a[30] 指针的指针 char **a
* 二维数组 char [3][5] 数组的指针 char (*a)[3]
*
*
* @return
*/
int main2() {
char a[3][4]={"111","1sf"};
printArr(a);
printArr2(a);
printArr3(a);
}
int main(int argc,char* argv[],char **env) {
for(int i=0;i<argc;i++){
printf("%s \n",argv[i]);
}
}
C 进阶多维数组
最新推荐文章于 2021-03-21 11:03:24 发布