struct sample
{
int a;
char b;
float c;
int *al;
union un
{
int a;
char c;
float f;
}*ptr;
}test;
如何訪問結構成員'al'和聯合成員a,c,f?如何訪問C中的結構內的指針成員?
struct sample
{
int a;
char b;
float c;
int *al;
union un
{
int a;
char c;
float f;
}*ptr;
}test;
如何訪問結構成員'al'和聯合成員a,c,f?如何訪問C中的結構內的指針成員?
比其他人沒有區別:
訪問al
test.al
如果你想的al
的價值,你可以通過*(test.al)
得到它。
訪問a
,c
,f
test.ptr->a;
test.ptr->c;
test.ptr->f;
仍然需要解除引用test.al. test-> al顯然不起作用,因爲你不是取消引用測試,所以*(test.al)會使它更清晰。 – ciphermagi
@ciphermagi'test.al'是變量本身,'*(test.al)'是該變量的值。無論如何,你有一點。答案已更新。 –
我不相信'*(test.al)'比'* test.al'更清晰。 –
的事情是,你需要取消引用指針。
通常我們會這樣做,以解除工會的解除。
test.*ptr.a.
這樣做的問題是,編譯器將反引用符號之前執行dotnotation,編譯器會因此取消引用工會的領域,而不是聯合它的自我。
爲了解決這個問題,我們可以把'* ptr'in圓括號強制在訪問該字段之前使用聯合。喜歡這個。
test.(*ptr).a
爲了更方便的語法,這也可以寫成
test.ptr->a
sample.ptr->爲你的工作?或*(sample.al)? – ciphermagi
我想在訪問它們的時候使用'test'和'ptr'al和a,c,f respec。這是如何運作的? – Arun
'test.ptr-> a;'會工作。 – jfly