0
我有2個指向某些點結構的指針。我想要計算2點之間的距離(我不需要計算其根),所以我有這樣的:奇怪的printf方程
w[0]=X[l];
w[1]=X[l+1];
d=m(w[0]->x-w[1]->x)+m(w[0]->y-w[1]->y);
printf("--TEST %d %d %d\n",w[0]->x,w[1]->x,w[0]->x-w[1]->x);
輸入:X [1] =(0,1),X [L + 1] = (2,0) 輸出: - 測試0 2 -1
這是爲什麼? 編輯:
這是一部分功能找到它發現2點與它們之間的最小距離。在主要我有這個:
X=(Punkt**)malloc(sizeof(Punkt*)*n);
Y=(Punkt*)malloc(sizeof(Punkt)*n);
int x,y;
for(int i=0;i<n;++i) {
scanf("%d %d",&x,&y);
Y[i].x=x;
Y[i].y=y;
X[i]=(Punkt*)malloc(sizeof(Punkt*));
X[i]=&Y[i];
}
Quicksort(X,0,n-1);
Punkt **wynik=find(0,n-1);
printf("%d %d\n%d %d",wynik[0]->x,wynik[0]->y,wynik[1]->x,wynik[1]->y);
我檢查了Quicksort,它的工作原理應該如此。函數m:#define m(a)((a)*(a)) 只發現函數在那部分有bug。這工作,但我不想爲每個座標變量。
int trash1=w[0]->x;
int trash2=w[1]->x;
printf("--TEST %d %d %d\n",w[0]->x,w[1]->x,w[0]->x-w[1]->x,trash1-trash2);
輸入:2點(0,1),(2,0) 輸出:--test 0 2 -1 -2
你能提供一些更多的背景? 「w」和「X」在哪裏定義?你怎麼知道數組中的值是你認爲的值? – templatetypedef 2012-03-31 18:08:22
我的猜測是:**未定義的行爲**!如果您提供有問題的類型並在代碼中使用更多空間,可能會更容易發現。 – pmg 2012-03-31 18:08:56
請學習使用空格(和更好的變量名稱)。 – jamesdlin 2012-03-31 18:09:37