在昨天学习过数组指针之后,我们今天学习了指针数组、指针和二维数组的关系以及数组指针。
1.指针数组:
int *a[5];
char *str[5];
指针数组主要用来操作字符串数组,通过将指针数组的每个元素存放字符串的首地址实现对多个字符串的操作
二维数组主要用来存储字符串数组,通过每行存储一个字符串,多行存储多个字符串所组成的数组
2.指针和二维数组的关系:
int a[2][3] = {0};
int *p = NULL;
int (*q)[3] = NULL;
p = &a[0][0];
p = a[0];
p = *a;
q = a;
二维数组的数组名是指向数组第一行元素的数组指针
访问二维数组第m行第n的方式:
a[m][n]
*(a[m]+n)
*(*(a+m)+n)
*(p+m*N+n)
*(*(q+m)+n)
*(q[m]+n)
q[m][n]
二维数组传参:
int a[2][3] = {0};
int Fun(int (*parray)[3], int len);
char str[5][32] = {0};
int Fun(char (*pstr)[32], int len);
3.二级指针:
1.指针数组传参时
int *a[5] = {NULL};
a: int **
char *pstr[5] = {"hello", "world", "how", "are", "you"};
int Fun(char **ppstr, int len);
总结:在传参时,二维数组用数组指针传参,指针数组用二级指针传参