У меня было задание программирования некоторое время назад, где я наткнулся на эту небольшую проблему: когда я дал функции указатель в качестве параметра, я не мог изменить адрес, на который он указал. Я решил, что, возвращая новый адрес, я хотел, чтобы указатель указывал на него. Но мне все еще интересно, почему невозможно манипулировать параметром указателя, потому что все функции выделения памяти работают с возвращаемым значением, а не с помощью списка параметров.Назначение нового адреса указателю в функции невозможно?
Возможно, я сделал что-то не так? Или действительно невозможно изменить плацдарм? У кого-нибудь есть объяснение?
Пример:
void foo(int *ptr)
{
ptr=malloc(sizeof(int));
} /* after calling this function I would
expect the pointee to have changed to the
newly allocate memory but it stays NULL*/
int main()
{
int *ptr=NULL;
foo(ptr);
return 0;
}
Просьба указать код, который иллюстрирует вашу проблему. – sergej
C проходит по значению. – alk