2012-04-29 4 views

ответ

8

http://cdecl.org/

  1. char (*p)[4]; - объявить р как указатель на массив 4 полукокса.
  2. char *p[4]; - объявить p как массив 4 указателя на символ.
+0

Как использовать этот «p как указатель на массив 4 символа» –

+2

, но вы хотите! –

+0

Is * p [0] = "Hello"; или * p [0] = (char *) malloc (10); допустимо для первой декларации –

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) 
+0

Спасибо! Понял!! –

+0

для указателей, картинка всегда помогает :) – phoxis

+2

В случае символа 'char (* p) [4]' важно отметить, что объявление не создает массив, а только указатель на один. – kittemon

Смежные вопросы