如何按INT型別操作CHAR型別陣列

2021-09-11 03:36:42 字數 986 閱讀 7667

這是學習指標的過程中遇到的乙個問題的記錄。

因為c++指標指向具體的記憶體位址,開始以為按照記憶體位址的加減就可以進行任意記憶體資料區域的操作,實際測試的時候發現,定義的指標有不同的型別,比如:

int * p;

定義的是乙個整數型指標。*(p+1)指向的是下乙個整型數,也就是記憶體位址加4(32位系統),不是記憶體位址加1。如果是字元型指標,則是位址加1,因為char佔1個位元組。

如果要對char型陣列按int型資料操作,編譯是不允許的,因為型別不一致。甚至顯示強型別轉換也不行。這種情況就需要用到無型別指標(void *)。

無型別指標可以指向任意型別指標位址。採用顯示強制型別轉換,還可以將無型別指標轉換為其他型別指標。也就是如果要按int型別操作char陣列,需要先轉換為無型別指標,然後在轉換為int型別指標才能工作。

一下是測試**:

#include 

using namespace std;

int main

(int argc, char *ar**)

;void

*void_p = charr;

int *int_p = static_cast>

(void_p)

;//int *int_p = static_cast(charr); //字元陣列指標直接轉強制轉換到整型指標編譯不過

cout<<

"print the content of void_p: "

<>

(void_p)

<<

"\n"

; cout<<

"print the content of int_p: "

;for

(int i =

0; i <

sizeof

(charr)

/sizeof

(int)

; i++

)return0;

}

java環境下char型別轉為int型別

char型別轉換為int型別 char a 1 int b int a 此時,輸出b得到的是字元 1 的ascii編碼49,其他數字甚至是字母也一樣,按此類方法輸出的都只會是ascii編碼,當然如果不強制型別轉換,直接寫作 int b a 編譯也不會出錯,不過輸出的依舊是ascii編碼。如果想直接輸...

c語言中char型別轉int型別

剛才做北郵2010年網研上機題的時候,遇到了char型和int型相互轉化的問題,這裡進行一下總結。今後,可能會多次更新部落格,因為半年做了很多總結,但是都是儲存在word文件上了,現在開始慢慢向csdn部落格轉移。1 char型數字轉換為int型,例如 char a 123 printf d n a...

c 中int轉換為char 型別

在學習c opencv時,想讀取有規律的一些影象,影象名時有規律的數字,要用到int 轉char 型別,可以寫 但是為了方便和整潔打算用c 自帶的函式寫成。在轉換時要用char 類的,因為在這裡我們不能初始化char 所以要分配一塊記憶體空間。include int i 0 char itc 10 ...