2017-01-26 11 views
1

コンパイル時に「警告:互換性のないポインタ型からの割り当て」が表示されます。どうすればその警告を受け取れないのですか?ここ警告:構造体のchar配列へのポインタを使用するための互換性のないポインタ型からの割り当て

は、ソースコードの一部である:

typedef struct 
{ 
    char id[9]; 
    char fName[9];  
    char lName[9]; 
    int finalExam; 
    int midTerm; 
    float quiz1; 
    float quiz2; 
    float quiz3; 
    float totalMark; 
} Student; 

.... 
.... 
.... 

pointAt = students; // initialize pointer 
      float* topMark; 
      char* topLname; 
      char* topId; 
      topMark = &(*pointAt).totalMark; 
      topLname = &(*pointAt).lName; 
      topId = &(*pointAt).id; 
      printf("top guy : %s\n", topLname); 
      pointAt += 1; 

私が警告することを得る:

topLname = &(*pointAt).lName; 
    topId = &(*pointAt).id; 

これらの2行は、アレイをcharに指すので、その警告を引き起こします。これをどうすれば解決できますか?

答えて

2

&(*pointAt).lNameおよび&(*pointAt).idは、タイプchar (*)[9]であり、これらの値が割り当てられる変数は、タイプchar *であり、したがってミスマッチです。

に崩壊するの式を取得するには、&演算子を削除します。その間に->演算子を使用して構造体ポインタのメンバーを参照してください:

topLname = pointAt->lName; 
topId = pointAt->id; 
関連する問題