Что я угадаю ваш вопрос о том, что это задание
p = malloc(...)
в функции f
.
Это полностью допустимое назначение и работает как любое другое назначение.
Рассмотрим этот код:
void f(int p)
{
p = 0;
}
int main(void)
{
int q;
q = 1;
f(q);
}
В функции f
есть переназначение переменной p
, как в показанном вами коде. Это действительно так же, как для вашего кода. Не имеет значения, является ли p
простой переменной int
или указателем. Вы все еще можете переназначить его столько, сколько хотите.
Следует отметить, что аргументы в C передаются по значению . Это означает, что значение аргумента скопировано в переменную аргумента функции (p
в вашем случае и в моем примере). Изменение копии (т.е. p
), конечно, не приведет к изменению оригинала. Все модификации, которые выполняет функция f
, будут потеряны после ее возврата.
Таким образом, в моем примере, если вы напечатаете значение q
после вызова f(q)
, то будет показано, что q
равно 1
.