為何要在這里提強制類型轉(zhuǎn)換呢,測試代碼可以看到編譯器會報很多警告,意思是告訴程序員數(shù)據(jù)類型不匹配,雖然并不影響程序的正確運行,但是很多警告總會讓人感到難受。因此為了告訴編譯器代碼這里沒有問題,程序員可以使用強制類型轉(zhuǎn)換來將一段內(nèi)存轉(zhuǎn)換為需要的數(shù)據(jù)類型,例如下面有一個數(shù)組a,現(xiàn)在將其強制轉(zhuǎn)換為一個結(jié)構(gòu)體類型stu:
#include
typedef struct STUDENT
{
int name;
int gender;
}stu;
int a[100]={10,20,30,40,50};
int main(int argc, char **argv)
{
stu *student;
student=(stu*)a;
printf("student->name=%d\n",student->name);
printf("student->gender=%d\n",student->gender);
return 0;
}
可以看到a[100]被強制轉(zhuǎn)換為stu結(jié)構(gòu)體類型,當然不使用強制類型轉(zhuǎn)換也是可以的,只是編譯器會報警報。
上圖為程序的示意圖,圖中數(shù)組a[100]
的前12個字節(jié)被強制轉(zhuǎn)換為了一個struct stu類型,上面僅對數(shù)組進行了說明,其它數(shù)據(jù)類型也是一樣的,本質(zhì)上都是一段內(nèi)存空間。
-
C語言
+關(guān)注
關(guān)注
180文章
7614瀏覽量
137431 -
編譯器
+關(guān)注
關(guān)注
1文章
1642瀏覽量
49239
發(fā)布評論請先 登錄
相關(guān)推薦
評論