2014-11-26 2 views
-4

Может ли кто-нибудь объяснить мне, почему результатом программы является «5 3». Мне нужен короткий список шагов, показывающих, как работает программа. Пожалуйста, простите меня, если мой вопрос слишком прост, я просто начинаю. Вот код:C простой пример указателя

#include <stdio.h> 
float x = 4.5; 
float y = 2; 
float proc(float z, float *x) 
{ 
*x *= y; 
return z + *x; 
} 
int main() 
{ 
float x, y, *z; 
x = 2.5; y = -2; z = &x; 
y = proc(y, z); 
printf("%f %f\n", x, y); 
return 0; 
} 
+0

Объясните, где вы должны до сих пор, и какой оператор вы не понимаете. –

+0

Вы можете использовать отладчик и шаг за шагом, чтобы увидеть, что происходит, или просто добавить printf после каждой строки, чтобы распечатать любые переменные, которые были изменены этой линией. – user3386109

+0

Это может помочь, если вы измените имена переменных, чтобы один и тот же идентификатор не использовался для разных целей (например, в этом коде есть три разных 'x') –

ответ

0
int main() 
{ 
float x, y, *z; 
x = 2.5; y = -2; z = &x; 
y = proc(y, z); 

/* 
    inside the proc function, you are passing -2 and the address of x in to proc. 
    *x = *x * y // y = 2 which is the global variable defined earlier and *x = 2.5 which is the     passed in variable. 
    *x = 5 after the multiplication. 
    z + *x = 3 will be returned and passed in to the variable y defined inside the main function. 
    */ 
printf("%f %f\n", x, y); 
return 0; 
} 
Смежные вопросы