2017-01-05 16 views
-1

関数スワップは作業を行いますが、正常にスワップしますが、警告が出ます。C - 互換性のない警告のスワップポインタ

void swap(char **a,char **b) { 
     char * temp = *a; 
     *a=*b; 
     *b=temp; 
} 

void function() { 
    char ** arr[max]; // this is an array of pointers of pointers 
    ..... 

    swap(&arr[0],&arr[1]); 
} 

警告:互換性のないポインタ型 からאスワップאの引数1を渡し警告:互換性のないポインタ型

+1

それは**ない**賛辞である3つ星のプログラミングにつながるとして、あなたは**本当に**、欲しいものはほとんどません:

は、機能を修正しました。一般的なアドバイスとして、コードのどこにでも2つ以上の星が必要な場合は、デザインをチェックする必要があります。 – Olaf

+0

@Olaf、私はコンピュータサイエンスの学生です。私たちは宿題やレッスンで3つ星を使います。 – Ginger

+1

私はCおよびcaを含む30年以上のプロのプログラミングを持つ組み込みシステムエンジニアです。 10の他の言語。私はまた、大学の学生にCプログラミングを教えました。そして、私は、あなたが生産コードで3つ星のコードを使用する場合、あなたのアーキテクチャとインターフェイスに何か問題があると言います!悪い教師と悪いプログラマのお宅はそれほど珍しいことではありません。 – Olaf

答えて

2

arr[0]からאスワップאの通過引数2は、ポインタ(char**)へのポインタです。 &arr[0]はポインタ(char***)へのポインタへのポインタですが、関数にはchar**が必要です。

void swap(char ***a,char ***b) { 
    char **temp = *a; 
    *a=*b; 
    *b=temp; 
} 
+1

正しいコードを追加することができます。 –

+1

3スターのCプログラマを迎え入れることは、賛辞ではありません.OPが本当に使うべきものではないでしょう。 – Olaf

+0

@Olaf彼は解決しようとしている問題が何であるかわからないので、私たちが提供できる最善の答えは彼の直接的な質問に対する最も直接的な答えです。 – DyZ

関連する問題