char (*res)[]
和 char *res[]
都是关于字符指针的声明,但它们表示的意义有所不同。
-
char (*res)[]
:- 这是一个指向字符数组的指针的声明。
res
是一个伪二级指针,它指向一个未知大小的字符数组,指向指针的指针。- **res==arr[0], (*res)[i]==arr[i], *((*res)+i)==arr[i],但是不能res[i][j]。
- 这种声明通常用于指向动态分配的字符数组或者多维字符数组。
char (*res)[]; // 声明一个指向字符数组的指针 char arr[] = "Hello"; res = &arr; // 将指针指向字符数组 printf("%s\n", *res); // 输出字符数组的内容
-
char *res[]
:- 这是一个字符指针数组的声明。
res
是一个数组,数组的每个元素都是一个字符指针。- 这种声明通常用于表示字符串数组,每个元素是一个指向字符串的指针。
char *res[] = {"apple", "banana", "orange"}; // 声明一个字符串指针数组 for (int i = 0; i < 3; i++) { printf("%s\n", res[i]); // 输出字符串数组的每个元素 }
总结:
char (*res)[]
是指向字符数组的指针,而char *res[]
是一个字符指针数组。前者用于指向字符数组,后者用于存储字符串指针。