char (*p)[]和char *p[]的区别
时间: 2023-08-29 20:07:37 浏览: 94
关于char (*p)[] 和char p[]的问题
`char (*p)[]` 是一个指向字符数组的指针,它指向一个未知大小的字符数组,可以用来表示一个字符二维数组。而 `char *p[]` 是一个指向字符指针的数组,每个元素是一个字符指针,可以用来表示一个字符串数组。
例如,假设有以下定义:
```
char arr[3][4] = { "abc", "def", "ghi" };
char *p[] = { "abc", "def", "ghi" };
```
我们可以声明以下两个指针:
```
char (*ptr1)[4] = arr; // ptr1是一个指向字符数组的指针,指向arr数组的首地址
char **ptr2 = p; // ptr2是一个指向字符指针的指针,指向p数组的首地址
```
`ptr1` 指向的是 `arr` 数组的第一个元素,也就是 `"abc"`,而 `ptr2` 指向的是 `p` 数组的第一个元素,也就是 `"abc"` 字符串的地址。
因此,`char (*p)[]` 和 `char *p[]` 的含义和用途是不同的。
阅读全文