2016-04-12 11 views
0

次の構造体をtypedefで他の関数に渡すことはできますか?typedefで構造体を渡して使用する

このコードを試しましたが、動作していないようです。

typedef struct stru{ 
    int num; 
} stru; 

int main(void) 
{ 
    stru current; 
    struc(&current); 
    printf("%d", current.num); 
} 


int struc(stru* current) 
{ 
    *current.num = 1; 
    return 0; 
} 

私は誰かが私はそれを行うのを助けることができると思い、これを1に設定していない正しい方法ので、それが働いていなかった、私はいくつかの他の方法を試してみましたが、それらのいずれも

を働いています
+0

どうしたのですか? – SLaks

+0

@SLaksうまく動作しません。* current.num = 1;そのようにして – uSEwrasd

+1

'current-> num = 1;' postfixは単項よりも優先順位が高くなります。 – EOF

答えて

2

ユニーラー*は、.よりも優先順位が低くなります。

したがって、あなたのコードは、あなたが望むものと非常に異なる*(current.num) = 1として解析されます。

代わりに、逆参照が最初に発生するようにする必要があります((*current).num)。

これは非常に一般的で、Cは簡略化して、current->numです。

+0

ポインタ自体を括弧で囲んでも何もしません。 – EOF

+0

エラー:exprassionには構造体または共用体の型が必要です – uSEwrasd

+0

'*'は括弧の中にあったはずです。 – SLaks

関連する問題