Что такое доступное значение *p1
после использования procd3
?Подумайте, какое правильное решение. Указатели
void procd3(int *pt1, int *pt2){
int *pt3;
pt3 = pt1;
pt1 = pt2;
*pt1= *pt3 + 1;
}
void main(){
int va;
int *p1, *p2;
…
p1=(int *)malloc(sizeof(int));
p2=(int *)malloc(sizeof(int));
*p1=3;
…
*p2= *p1 + 2;
…
procd3(p1,p2);
…
}
Я думаю, что ответ 4. Поскольку *p1=3
в начале и *p2=*p1+2=5
. Поэтому, когда функция получает вызов pt3=3
, то pt1=5
и, наконец, *pt1=3+1=4
.
Звучит как домашнее задание. Вы приложили усилия, чтобы решить эту проблему самостоятельно? –
Sheesh, или даже просто запустить его сами и посмотреть? – Brian
@Louis Вы можете 'printf' протестировать его, знаете ли. –