小結:
1、結構體成員的地址順序同結構體定義時的成員的先后順序;
1、
Q
為什么不能用運算符==或!=來對結構體進行比較
A
結構體中的成員並不一定是連續存儲地存儲在內存單元中
2、
對結構體成員訪問
. structure member operator 結構體成員運算符 .
-> structure pointer operator 結構體指針運算符 ->
struct card {
char *face;
char *suit;
} aCard,deck[52],*cardPtr;
aCard.suit;
cardPtr->suit;等價於(*cardPtr).suit; 優先級 .>*
3、
#include <stdio.h>
union number {
int x;
double y;
};
int main(void) {
union number value;
value.x = 100;
printf("%d,%f\n",value.x,value.y);
value.y = 100.0;
printf("%d,%f\n",value.x,value.y);
}
與結構體一行,共同體也是一種派生類型。
共同體的成員共享同一個存儲空間。
123,2426809083006282900000000000000000000000000000000000000000000000000.000000
0,100.000000
請按任意鍵繼續. . .
每次只能訪問共同體的一個成員;
存儲一個共同體所用的字節總數,必須保證至少足以能夠容納其最大的成員。
#include <stdio.h>
union number {
int x;
double y;
};
int main(void) {
union number value;
value.x = 123;
printf("%d,%f\n",value.x,value.y);
printf("%d,%d,%d\n",&value,&(value.x),&(value.y));
value.y = 100.0;
printf("%d,%f\n",value.x,value.y);
printf("%d,%d,%d\n",&value,&(value.x),&(value.y));
}
123,-28473359069967665000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000.000000
37814048,37814048,37814048
0,100.000000
37814048,37814048,37814048
請按任意鍵繼續. . .
4、對比結構體成員地址
#include <stdio.h>
struct card {
char *face;
char *suit;
};
int main(void) {
struct card aCard,*cardPtr;
aCard.face="Ace";
aCard.suit="Spades";
cardPtr=&aCard;
printf("%s of %s \n%s of %s \n",aCard.face,aCard.suit,cardPtr->face,cardPtr->suit);
printf("%d,%d,%d\n%d,%d,%d",&aCard,&aCard.face,&aCard.suit,cardPtr,&cardPtr->face,&cardPtr->suit);
return 0;
}
Ace of Spades
Ace of Spades
37814048,37814048,37814052
37814048,37814048,37814052請按任意鍵繼續. . .
#include <stdio.h>
struct card {
char *suit;
char *face;
};
int main(void) {
struct card aCard,*cardPtr;
aCard.face="Ace";
aCard.suit="Spades";
cardPtr=&aCard;
printf("%s of %s \n%s of %s \n",aCard.face,aCard.suit,cardPtr->face,cardPtr->suit);
printf("%d,%d,%d\n%d,%d,%d",&aCard,&aCard.face,&aCard.suit,cardPtr,&cardPtr->face,&cardPtr->suit);
return 0;
}
Ace of Spades
Ace of Spades
37814048,37814052,37814048
37814048,37814052,37814048請按任意鍵繼續. . .