2016-09-30 13 views
0

私はこのスワップ関数で自分の運をしようとしていますが、問題があります。スワップ関数と一般的な関数

私は、「新しいnum1」をnum2の値に置き換え、その逆も念頭に置きます。

誰でも正しい方向に私を押しつけることができますか?

int temp = *a; 
*a = *b; 
*b = temp; 

あなたのコンパイラが警告を発しませんでした:あなたはポインタが服従する必要が

#include <stdio.h> 


void swap(int *a, int *b) 
{ 
int temp = *a; 
a = *b; 
b = temp; 
printf("Just checking if this badboy gets to the swapfunction.\n"); 
} 


int main() 
{ 
int num1 = 33; 
int num2 = 45; 

swap(&num1, &num2); 

printf("A: %d\n", num1); 
printf("B: %d\n", num2); 

getchar(); 
return 0; 
} 
+2

コンパイラから、どの行に問題があるかを示すエラー/警告メッセージが表示されます。そうでない場合は、コンパイラでどの設定を使用しているか調べる必要があります。 –

+0

こんにちは、ありがとう、私は正しい方法で*を使用したときに働いた。 いいえ、それについて私に警告していない、それは元の順序で元の番号を印刷しました。このような設定はどこで管理できますか? – niyz

+0

はどのコンパイラとIDEを使用しているかによって異なります... –

答えて

2

+0

こんにちは、ありがとう、私は正しい方法で*を使用したときに働いた。いいえ、それについて私に警告していない、それは元の順序で元の番号を印刷しました。このような設定はどこで管理できますか? – niyz

+0

GCC '-Wall'を使用している場合、すべての警告が有効になります。より精細なオプションがあります。「警告オプション」を参照してください。https://gcc.gnu.org/onlinedocs/gcc/Option-Summary.html – jayjay

0

あなたが知っておくべきいくつかの重要な事柄は次のとおりです。必要な

int temp = *a; // Correct , temp stores value at the address of a 

a = *b; //Incorrect, a is pointer that is used to hold address NOT values 

修正は次のとおりです。

*a = *b; //Correct, now value at address of a is = value at address of b 

同じ過ちもここで:必要

b = temp;//Incorrect, cause b is pointer used to hold address and NOT values 

補正が

*b = temp; 
です
関連する問題