Если вы эмулируете передачу по ссылке с указателями, вы должны передать указатель на функцию, а не на переменную.*q = &x;
должно быть q = &x;
, а вызов функции должен быть cube1(&x)
или cube1(q)
.
Но даже если вы сделаете это, вы вызовете неопределенное поведение, так как вы вызываете cube1(&x)
, что модифицирует x
и передайте x
в качестве параметра без промежуточной точки.Не существует гарантированного порядка вычисления.
Например, в моей системе выводится:
27 cubed using variable passing by reference = 27
27 cubed using variable passing by value = 19683
Чтобы избежать этого, вы должны вывести x
и возвращаемое значение функции в дваотдельные заявления:
printf("%d cubed using variable passing by reference = ", x);
printf("%d\n", cube1(&x));
printf("%d cubed using variable passing by value = %d\n", x, cube2(x));