為何要在這里提強制類型轉換呢,測試代碼可以看到編譯器會報很多警告,意思是告訴程序員數(shù)據(jù)類型不匹配,雖然并不影響程序的正確運行,但是很多警告總會讓人感到難受。因此為了告訴編譯器代碼這里沒有問題,程序員可以使用強制類型轉換來將一段內存轉換為需要的數(shù)據(jù)類型,例如下面有一個數(shù)組a,現(xiàn)在將其強制轉換為一個結構體類型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]被強制轉換為stu結構體類型,當然不使用強制類型轉換也是可以的,只是編譯器會報警報。

上圖為程序的示意圖,圖中數(shù)組a[100]
的前12個字節(jié)被強制轉換為了一個struct stu類型,上面僅對數(shù)組進行了說明,其它數(shù)據(jù)類型也是一樣的,本質上都是一段內存空間。
-
C語言
+關注
關注
183文章
7634瀏覽量
143917 -
編譯器
+關注
關注
1文章
1665瀏覽量
50854
發(fā)布評論請先 登錄
評論