Передать массив указателей в функцию по ссылке - C (СИ)
Формулировка задачи:
Здравствуйте. Подскажите пожалуйста как передать массив указателей в функцию так, чтобы при изменении этих указателей в функции изменения сохранились бы и в главной программе?
Решение задачи: «Передать массив указателей в функцию по ссылке»
textual
Листинг программы
void Test(char** ppTest)
{
*ppTest = (char*)0x12345678;
}
/////////////////////////////////////////////////////////////////////////
int main(int argc,char** argv)
{
char* pTest = NULL;
printf("Berore: MyPtr is: %p\n",pTest);
Test(&pTest);
printf("After: MyPtr is: %p\n",pTest);
return 0;
}
Объяснение кода листинга программы
- В функции
Testпроисходит передача массива указателейppTestв качестве аргумента по ссылке. - Внутри функции
Testпроисходит присвоение значения 0x12345678 указателюppTest. - В функции
mainинициализируется указательpTestзначением NULL. - Выводится сообщение с исходным значением указателя
pTestс помощью функцииprintf. - В функцию
Testпередается адрес указателяpTestс использованием оператора&. - Значение указателя
pTestизменяется внутри функцииTestна 0x12345678. - Функция
Testвозвращает управление в функциюmain. - Выводится сообщение с новым значением указателя
pTestс помощью функцииprintf. - Функция
mainзавершает свою работу, возвращая 0.