為何要在這里提強制類型轉換呢,測試代碼可以看到編譯器會報很多警告,意思是告訴程序員數據類型不匹配,雖然并不影響程序的正確運行,但是很多警告總會讓人感到難受。因此為了告訴編譯器代碼這里沒有問題,程序員可以使用強制類型轉換來將一段內存轉換為需要的數據類型,例如下面有一個數組a,現在將其強制轉換為一個結構體類型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;
}
![poYBAGMZ4cKALyshAABCAJTB-Cs026.png](https://file.elecfans.com/web2/M00/67/CA/poYBAGMZ4cKALyshAABCAJTB-Cs026.png)
可以看到a[100]被強制轉換為stu結構體類型,當然不使用強制類型轉換也是可以的,只是編譯器會報警報。
![pYYBAGMZ4dmAEKgKAADJefap1-w649.png](https://file.elecfans.com/web2/M00/68/63/pYYBAGMZ4dmAEKgKAADJefap1-w649.png)
上圖為程序的示意圖,圖中數組a[100]
的前12個字節被強制轉換為了一個struct stu類型,上面僅對數組進行了說明,其它數據類型也是一樣的,本質上都是一段內存空間。
審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
C語言
+關注
關注
180文章
7614瀏覽量
137757 -
編譯器
+關注
關注
1文章
1642瀏覽量
49299
發布評論請先 登錄
相關推薦
C語言中void指針的基本認識及典型應用
C語言中,*類型就是指針類型,比如 int *p,double *q,雖然是不一樣的指針,但是大小卻一樣sizeof(p) == sizeof(q),因為它們都是同一種
發表于 02-01 09:26
?1141次閱讀
C語言中定義int a,a是什么類型?
C語言中定義int a[10][10],a是什么類型? 我的理解是a是指向二維整型數組的指針 ,具體這個怎么用?一般都處理什么樣的數據呢??
發表于 05-25 07:10
C語言中int型強制類型轉換成short型的溢出問題怎么解決?
如何判斷STM32編碼器模式中電機的正反轉?C語言中int型強制類型轉換成short型的溢出問題怎么解決?
發表于 10-19 06:59
C語言中的不完整類型是什么
C語言中存在這樣一種類型,名叫不完整類型(Incomplete types),雖然我們可能不太理解,或許也沒有仔細研究過,但是在實際的編程中,我們卻已經用到過很多次了。
簡述C語言中指針重點
在C語言中一個函數可以返回一個整型值、字符值、實型值等,也可以返回指針型的數據,即地址,其概念與以前類似,只是返回的值的類型是指針類型。
scanf在C語言中的作用
scanf在C語言中的作用? scanf是C語言中的輸入函數,用于從標準輸入設備(如鍵盤)讀取數據,并將其存儲到變量中。它是C
c語言中數組怎么定義
C語言中,數組是一種用來存儲相同類型元素的數據結構。它可以存儲多個元素,并通過一個共同的名稱來引用這些元素。數組是一種很重要的數據結構,可以用于解決很多實際的問題。 在C
評論