我剛剛開始學習C.我認爲我在這裏做了錯誤的指針或不明白它的意思。看看這個:使用指針和聯合
#include <stdio.h>
union Uniao{
int i;
float f;
char c[4];
};
void test(union Uniao *uniao);
int main(){
union Uniao uniao;
printf("uniao.i: %x\n"
"uniao.f: %x\n"
"uniao.c: %x\n",
&uniao.i, &uniao.f,&uniao.c);
test(&uniao);
}
void test(union Uniao *uniao){
printf("uniao.i: %x\n"
"uniao.f: %x\n"
"uniao.c: %x\n",
uniao->i, uniao->f,uniao->c);
}
據我所知,一個指針指向原始變量的內存位置。所以使用指針的輸出應該與使用原始變量的輸出相同。但我的輸出是這樣的:
uniao.i: bfeac1dc
uniao.f: bfeac1dc
uniao.c: bfeac1dc
uniao.i: b77abff4
uniao.f: 80000000
uniao.c: beef57fe
是否有我的指針有問題或我誤解了它?
請解釋你的意圖,試着描述你想達到的目標。 – user2485710
你的工會未初始化 – mathematician1975
@ mathematician1975我認爲這並不重要,因爲內存已經分配,我只是想要它的位置。 – Junior