Тествах следния код на няколко компилатора и не ми се струва да произвежда "undefined behaviour", въпреки, че проблема с непредвидимото поведение е, че може да виждаш нещо, което изглежда според планираното, но всъщност програмата ти бълва някакви случайни работи.
Та понеже assembly езиците, както и неща като "compiler explorer" са ми все още тъмна индия (все едно гледам древноегипетски йероглифи, макар че от asm чат-пат разбирам на този или на онзи ред какво се случва).
И така, след тази увертюра - ето малкия пример, който написах:
Код: Избери всички
#include <stdio.h>
void returnAddress(short **acceptPtrAddress);
int main()
{
short *ptr;
returnAddress(&ptr);
printf("ptr points to address:\t%p\nDereferenced ptr displays value of: %d\n", ptr, *ptr);
return 0;
}
void returnAddress(short **acceptPtrAddress)
{
short a;
puts("Enter value for a: ");
scanf(" %hi", &a);
printf("Address of var a is:\t%p\n", &a);
*acceptPtrAddress = &a;
puts("\nNow terminating returnAddress function.\nAll local variables being deleted.\nControl reverts back to main...\n");
}