2

可能重复:
指向数组/指针数组的 C 指针消歧

有什么char (*p)[4];不同char *p[4];

4

2 回答 2

8

http://cdecl.org/

  1. char (*p)[4];-- 将 p 声明为指向 char 数组 4 的指针。
  2. char *p[4]; -- 将 p 声明为指向 char 的指针的数组 4。
于 2012-04-29T14:44:14.093 回答
4

char (*p)[4];:p是一个指向char长度为 4 的数组的指针。

                         char [4]
    points to              |
     char [4]              v

   +------+             +------+------+------+------+
   |  p   |------------>|      |      |      |      |
   +------+             +------+------+------+------+
                         char    char   char   char  

   p will point to a char [4] array. Array is not created. 
   p is intended to be assigned at address of a char [4]  

char *p[4];:p是一个长度为 4 的数组,数组的每个位置都是一个指向char

              +------+------+------+------+
   p          |      |      |      |      |
an array      +------+------+------+------+
 itself          |      |      |      |
                 v      v      v      v  
               char*  char*  char*  char*

  p is an array and will be allocated in stack (if automatic)
于 2012-04-29T14:53:04.387 回答