2014-03-09 5 views
-4
int main() 
    { 
     int i = 10; 
     int *p = &i; 
     foo(&p); 
     printf ("%d ", *p); 
     printf ("%d ", *p); 
    } 

    void foo(int **const p) 
    { 
     int j = 11; 
     *p = &j; 
     //Printing the vlue 
     printf("%d ", **p); 
    } 
+3

У вас нет компилятора? – devnull

+5

Этот вопрос не соответствует теме, потому что речь идет о получении вывода программы без использования компилятора. – devnull

+3

Получите ручку и бумагу, нарисуйте вещи, и вы получите ответ. Чтобы убедиться в этом, запустите свой код. – Maroun

ответ

1

Когда foo возвращает указатель p в main указывает на локальную переменную, которая существовала во время выполнения foo. Поскольку foo закончился, удаление ссылки на этот указатель вызывает неопределенное поведение. Поэтому ваша программа может выводить или действительно делать что угодно.

Смежные вопросы