C语言各种类型指针的定义

指向一个整形变量的指针:
指向一维整形数组的指针:
指向二维整形数组的指针:

指向一个字符变量的指针:
指向一维字符数组的指针:
指向二维字符数组的指针:

分别如何定义呢?

#include <iostream>

int main()
{
    int a[3][5];
    char b[4][6];
    int *p1 = &a[1][2];
    int(*p2)[5] = a;
    int(*p3)[3][5] = &a;
    char *q1 = &b[1][2];
    char(*q2)[6] = b;
    char(*q3)[4][6] = &b;
    return 0;
}