我的指針程序出了問題,它應該使用雙指針切換double值x和y的值。我對指針非常陌生,我無法做到這一點。現在使用雙指針切換變量的值
Swapping x and y
X -> address: A3D70A3D | value: -0.000000 || Y-> address: 4011BD70 | value: 4.435000
Done swapping x and y
X -> address: A3D70A3D | value: -0.000000 || Y-> address: 4011BD70 | value: 4.435000
Process returned 0 (0x0) execution time : 0.016 s
Press any key to continue.
好吧,我改寫了我的碼x仍值,Y贏得了「T交換:
#include <stdio.h>
#include <math.h>
/*
todo
implement switch_pp(**a,**b)
switch the content of a,b using double pointers
Only switch the values all pointer addresses must remain the same!
*/
void switch_pp(double** a,double** b){
double valueOfA = **a;
double valueOfB = **b;
*a = &valueOfB;
*b = &valueOfA;
}
int main(int argc, char* argv[]){
double x = 14.435,y = 4.435; //needs to work with these parameters
double *ptr_x = &x, *ptr_y= &y;
printf("Swapping x and y\n");
printf("X -> address: %p | value: %f || Y-> address: %p | value: %f\n", x,x,y,y);
switch_pp(&ptr_x,&ptr_y);
printf("Done swapping x and y\n");
printf("X -> address: %p | value: %f || Y-> address: %p | value: %f\n", x,x,y,y);
return 0;
}
的輸出!儘管我參考了* a =&ValueOfB;但據我瞭解& ptr_x - > ptr_x - > x所以如果我寫* a = & ValueOfB我也可以用ptr_x替換* a,這樣我就可以進一步替換爲ptr_x = & y!這應該工作
打開編譯器警告,並注意它們。它應該抱怨函數參數與實際參數之間的不匹配類型。 –
你確定你粘貼了從*一個*運行中獲得的* exact *輸出嗎?請仔細檢查。 – alk
對於需要傳遞地址的printf地址。你通過雙打。 – alk