2013-06-29 7 views
1

I A 2D массив сказать Int А [2] [3]указатель на массив, разница в 2D массива и 1d массива

, когда мы называем функцию сказать добавить (а);

мы получаем его, используя указатель на массив недействительной надстройки (INT (* р) [3])

НО

В 1D массива сказать INT B [5 ]

Мы храним адрес массива простым указателем на целое число int * p;p = b;

мой вопрос заключается в том, что почему бы не хранить Ъ в указатель на массив ех Int (* р) [5] = Ь;

ответ

1

Имя массива при использовании в качестве значения будет затухать в значение, равное указателю на его первый элемент, с этим типом. Это означает, что для:

int a[2][3]; 

Название a будет затухать до &a[0], который имеет тип int (*)[3]. Но, как:

int b[5]; 

Название b будет затухать до &b[0], который имеет тип int *.

Однако, &b является указателем на b, что означает, что он имеет тип int (*)[5]. Так получилось, что для типа массива его адрес будет сравниваться с адресом его первого элемента. Но, &b имеет другой тип: &b[0].