Вот мой код: -Передача 2D массива в функции в C
void display(int *p)
{
printf ("%u\n", p);
printf ("%u\n", p+1);
}
int main()
{
int a[3][4] = {
1,2,3,4,
5,6,7,8,
9,0,1,2
};
printf("%u\n",a);
printf("%u\n",a+1);
display(a);
}
Почему а + 1 и р + 1 дают разные адреса? Если a и p дают одинаковые адреса, то не должны указывать +1 и p + 1 на одни и те же адреса?
Учитывая, что вы игнорируете предупреждения компиляции, вы должны получить разницу 'sizeof (int)' (вероятно, 4) от 'display()', и вы должны получить разницу в размере 4 * sizeof (int) '(вероятно 16) из кода в 'main()'. Это потому, что 'a' в' a + 1' имеет тип 'int (*) [4]' или указатель на массив из 4 'int'. –