int val = 7;
Указатель и массив назначение
int *ptr = &val;
Допустимы переменная типа Int и PTR является указателем на тип INT поэтому выше назначение прав, и нет никакого предупреждения от компилятора.
int val[5] = {5, 3, 2, 33,557};
int (*ptr)[1]=&val;
Допустимы массив целых чисел и PTR является указателем на массив INT при запуске компилятор дать мне предупреждение:
warning: initialization from incompatible pointer type [enabled by default]
пожалуйста, кто-то объяснить мне, что это differece между их?
Я думаю, что 'int (* ptr) [5] = &val;' неверно, так как он (почти) говорит объявить массив из 5 указателей на int, а затем установить (трудно сказать, какую запись в 'ptr []' array) устанавливается в адрес «val». Возможно, вы имели в виду: 'int * ptr [5]; ptr [0] = &val; ' – user3629249
@ user3629249 Нет, я имел в виду то, что написал. 'int (* ptr) [5]' является указателем на массив из 5 целых чисел. – juanchopanza
@ user3629249 Вот [связанный вопрос] (http://stackoverflow.com/questions/859634/c-pointer-to-array-array-of-pointers-disambiguation). – juanchopanza