typedef struct S {
int i;
char *pc;
} S;
void foo() {
char str[] = "abcdefg";
const S cs = {1, str};
// more code
}
、cs
型const S
であり、そして私はそれがint *
を必要とする機能に&cs.i
を渡すだけconst int *
できないのでcs.i
は、有効const int i
あります。const構造体インスタンス内の有効な型のメンバーですか?上記の例で
質問は、cs.pc
の有効なタイプは何ですか? const char *
またはchar * const
ですか?つまり、以下の関数のどれに&cs.pc
を渡すことができますか?
A: void foo_a(const char * * ppcc);
B: void foo_b(char * const * pcpc);
私を修正すること自由に感じ、私は「効果的なタイプ」の意味については、指定されたワードが何であるかわからないので、ケースには、私は間違っているか、私は適さない表現を使用。 – iBug
struct内のデータだけがconstなので、アドレス(pcの値)だけがconstです。データpcが指し示すのは... –
あなたの質問とは無関係ですが、アンダースコアで始まり大文字の文字( '_S'など)が続くシンボルは* all *スコープで予約されています。このようなシンボル名は使用しないでください。あなたの場合は、構造体(と共用体と列挙型)タグ(あなたの '_S'など)は独自の名前空間に存在するので、修正するのは簡単です。したがって、構造体を型名と同じ名前にすることができます。 –