C指標之指標與強制型別轉換

2021-10-07 04:31:49 字數 816 閱讀 8992

int a = 5;

printf("a = %d.\n", a); // 5

printf("a = %f.\n", a); // 乙個很奇葩的數字,一看就知道是亂碼

乙個指標涉及2個變數:

int *型別說白了就是指標型別,只要是指標型別就都是佔4位元組,解析方式都是按照位址的方式來解析(意思是裡面存的32個二進位制加起來表示乙個記憶體位址)的。

對於指標所指向的那個變數來說,指標的型別就很重要了

int a = 5;

int *p1 = &a;

float *p;

p = (float *)p1;

printf("*p1 = %d.\n", *p1); //5

printf("*p = %f.\n", *p);

int a = 66666;

char *p1 = &a;

printf("*p1 = %d.\n", *p1);

short *p2 = &a;

printf("*p2 = %d.\n", *p2);

C 指標型別與強制轉換

指標是乙個特殊資料型別,也可以理解為混合資料型別。指標具有資料型別資訊及資料在記憶體空間的位址。問題分析 c 指標雖然像int型別或是long int型別一樣存放著記憶體位址。但是我們取得的指標位址,不僅僅只有位址值,因為指標型別是一種混合型別。這時我們就需要強制型別轉換。我在qt 5.14版本編譯...

指標強制型別轉換

當我們初始化乙個指標或給乙個指標賦值時,賦值號的左邊是乙個指標,賦值號的右邊是乙個指標表示式。在我們前面所舉的例子中,絕大多數情況下,指標的型別和指標表示式的型別是一樣的,指標所指向的型別和指標表示式所指向的型別是一樣的。例十四 1。float f 12.3 2。float fptr f 3。int...

指標型別強制轉換

問題為下 include void main 輸出為啥不是1呢 這個時候,我們可以看到函式式裡面有格式的轉換,如果格式轉換時存在除void格式外,還有兩個及兩個以上的格式的轉換,則這時候的指標所指的variable所佔的記憶體會產生變化,從而會使格式發生相應的變化 對於本題 當你強行將int指標變為...