//二级指针内存模型③ #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <string.h> //内存模型详解 //一维数组类型是 typedef int Myarr[5]; Myarr a;(其中Myarr是一维数组类型) //Myarr *p;p是一维数组的指针 //是一维数组的指针的类型是 typedef int(*PArrType)[5]; PArrType p;(其中PArrType是数组指针类型)p指向的是一个数组 //p=&a; //typedef int(*PArrType)[5]; PArrType p;p也可以直接定义为int(*p)[5]; p是数组指针,指向一个 typedef int Myarr[5];类型的数组 //p的步长是 sizeof(int)*5=40个字节 //遍历数组 int printfarr(char(*pin)[20], int num){ int ERRO_MSG = 0; if (pin == NULL) { ERRO_MSG = 1; printf("pin==NULL erro msg:%d\n", ERRO_MSG); return ERRO_MSG; } int i = 0; //打印数组 //注意 pin的步长是 sizeof(char)*20 pin+1 跨度是20个字节 for (i = 0; i < num; i++) { printf("%s\n", *(pin + i)); } return ERRO_MSG; } void main() { char tarr[3][20] = { "aaa", "bbb", "ccc" }; //tarr本质上是一个一维数组的指针 其类型是 typedef char(*PArrType)[20]; 步长是 sizeof(char)*20 //typedef char(*PArrType)[20]类型的变量可以直接定义为 char(*p)[20] printfarr(tarr, 3); system("pause"); }