Вот код:Указатели в C с массивами
#include <stdio.h>
int main()
{
int c[4][4] = {{0,1,2,3},{4,5,6,7},{8,9,10,11},{12,13,14,15}};
int (*p)[3] = (int(*)[3])(c+2);
return 0;
}
Его Интересно, что она устанавливает р быть: {{8,9,10}, {11,12,13}, {14, 15, -8224}}
Я не понимаю, что происходит, особенно в 6-й строке кода. Пожалуйста, помогите мне!
Есть ли причина, по которой вам нужно понять, что происходит в куске кода, который ничего не делает и написан таким образом, что никто никогда не должен писать код? –
'(int (*) [3])' является * cast *, указателем на массив из трех целых чисел. Хотя выражение 'c + 2' равно' & c [2] ', которое является указателем на третий элемент' c'. –
Да, мне нужно знать, потому что, на удивление, он устанавливает p {{8,9,10}, {11, 12, 13}, {14,15,0}}. – Debdut