C C指標的型別轉換

2021-06-22 15:05:49 字數 1066 閱讀 2719

很多時候我們總是會將指標強制進行型別轉換,通過實驗和了解,總結一下規律,這裡記錄下來,方便以後自己使用;

1)、低位元組向高位元組轉換(比如:int*-->float*):int型佔據4個位元組,但是float佔據8個位元組,起初你的資料是存放到4個位元組中的變數的,而後轉換成8位元組,讀取的時候會先讀取4位元組的int數值,而多餘的4位元組資料內容是什麼呢?那就不定了哦,所以如果要對付這種情況,那麼需要乙個初始化的,例子如下:

shorttemp =10;

int*point =new int[1];

point= (int *)&temp;

*point&= 0x0000ffff;//這裡對其進行乙個初始化,point指標指向int型的資料,這裡先將其高2個位元組初始化,之後就ok了啊

temp= 255;

printf("%d\n",*point);

2)、高位元組向低位元組轉換(int *--->char*):這種轉換同資料型別轉換一樣,(int--->char),會丟失高位元組。這種轉換不用擔心什麼,直接使用就行。因為你轉向了低位元組,你在使用的時候也使用的是低位元組的資料,所以你不用擔心什麼。

unsigned shorttemp= 12245;//0x2fd5

unsigned char *point= new unsigned char[1];

point=(unsigned char *)&temp;

printf("%x\n",*point);//0xd5

printf("%x\n",temp);//0x2fd5

3)、同等級轉換也很簡單,基本同上:(unsigned char*--->char*)

unsigned shorttemp= 0xeeee;

short*point=new  short[1];

unsigned  short*pointu=new  unsigned short[1];

point=( short *)&temp;

pointu =(unsigned short *)point;

printf("%x\n",*point);

printf("%x\n",*pointu);

C C 的型別轉換

c語言的型別轉換分為隱式型別的轉換和強制型別的轉換。隱式型別轉換 適用於相近型別的轉換 int main return 0 int main 因為c語言的隱式型別轉換坑很大,標準c 為了加強型別轉換的可視性,引入了四種命名的強制型別轉換操作符 static cast 相近型別的轉換 static c...

C C 型別轉換

include include using namespace std int main 程式的執行結果如下 註解 int a 相當於將浮點數a的位址的前sizeof int 個位元組當成int型的資料輸出。float a 1.0f在記憶體中的表示是0x3f800000,當 int a強制轉換時,會...

C C 型別轉換

如果乙個int型的變數值為5,則若使用強制型別轉換或者使用memcpy,則相當於直接copy記憶體中的值,若列印,則會列印5對應的ascii值 而若使用函式轉換,則函式會操作記憶體轉為ascii值的5,若列印,則直接為5。memcpy在一定程度上相當於強制型別轉換,但是可以制定拷貝的位元組大小,因此...