#include <stdio.h>
void foo(int []);
int main()
{
int ary[4] = {1, 2, 3, 4};
foo(ary);
printf("%d ", ary[0]);
}
void foo(int p[4])
{
int i = 10;
p = &i;
printf("%d ", p[0]);
}
Может кто-нибудь объяснить мне приведенный выше код. Я получаю вывод как 10 (в foo) и 1 (в основном). Но я ожидаю 10 и 10 (как в foo, так и в основном). Как и в функции, базовый адрес foo указывает на & i.Пропускание базового адреса массива
одно сомнение: Как вы сказали, р локальна к функции, и как p [0] вносит изменения в arr. Также, что передается при отправке массива в качестве параметра, –
Это просто, 'p' является локальным для' foo', но он по-прежнему указывает на 'ary', пока ему не будет присвоено иначе. После 'p = & i'' p' больше не указывает на 'ary'. Могу ли я это прояснить? –
thks boss ... я понимаю ясно !!! –