1樓:風若遠去何人留
這個表示式的意思是,把a強制轉換為it*型。
不過it並不是c語言中的標準型別,在這裡可能是int的誤寫,也可能是乙個自定義型別it。
不過是哪種形式並不影響對這個表示式的理解。
(type *)expr形式,含義為
把表示式expr(可以是乙個變數,也可以是乙個表示式的結果)轉為type *型。
一般這類轉換的作用都是賦值給乙個type *型的變數,或者直接對其取位址。下面以int*型分別舉例說明。
1 賦值形式。
例項**如下:
#include
void func(int *a, int len)
int main()
,};int *p;
p = (int *)a;
func(p, 4);
return 0;
}這是乙個很常見的把二維陣列降維到一維指標處理的情況。
p=(int *)a;就是之前說的賦值形式。
這裡也可以簡化為不用中間變數p的形式,即
func((int *)a, 4);
效果是一樣的。
2 直接取值。
其實上乙個例子中,簡化掉中間變數後,就已經是直接取值的一種形式了。
還有一種常見的形式是這樣的:
#include
int main()
;printf("^%d\n", *((int *)str));
}這裡把字元陣列str強制轉換為int*型並取值,然後對其按照整型進行輸出。
綜上所述,強制轉換為某種指標的作用就是把轉換結果當做該指標來用。應用可能多種多樣,但其原理都是相同的。
2樓:匿名使用者
首先gpioa_base是乙個位址,這個位址是你可以直接訪問的。((gpio_typedef *) gpioa_base) 則是把gpioa_base這個位址轉換成乙個gpio_typedef 這個結構體變數的起始位址。也就是乙個指向乙個gpio_typedef變數 的乙個指標。
這樣就很容易對gpioa_base之後的一系列暫存器賦值了。
從你的程式來看,比如crl這個暫存器,它的位址應該就是gpioa_base起始位址,crh就是gpioa_base+4,依次類推。
現在你可以這樣使用。gpio_typedef * preg = ((gpio_typedef *) gpioa_base);
preg->crl = 某值,preg->crh = 某值。這樣閱讀起來方便,自己也不容搞錯。
我只是舉個例子方便你理解。
c語言 int(*a)(int*),*b( ),w[10],c;各變數的分別代表什麼?
3樓:匿名使用者
int(*a)(int*); a是乙個函抄數襲指標可以指向形如 int func( int *)型別bai的du函式int *b() ; //這是乙個函zhi數宣告,b是乙個函式,返回值型別是int *,沒有引數
int w[10],c; w是個dao
陣列,c是個普通整形變數
4樓:匿名使用者
12uahwd1111阿瓦達w愛的偉大,
挖到打dddddddddddddddddddddddd大大大大大大,我的我的地位,
多大哇大回大大大大大大大大大大大,
大娃答上學
達瓦大大大大大大大大大大大大大大大大大大大我的,到底誰打我。
c語言中型別強制轉換什麼意思?通俗點怎麼解釋,不要定義
5樓:匿名使用者
型別轉換嘛bai
,很容易理du解的啦。
型別轉換分zhi
兩種,一種
dao是水到渠成的轉換,內這種轉換沒有容任何錯誤,不會損失精度(比如1.23 不會變成1.2)、不會超出值域,是不帶強制性的,這種轉換是不用強制指定的,程式會自動完成,反正也不會對你的數字產生任何不好的影響。
(就像小孩子希望自己馬上長大,然後作為乙個神,你就立馬實現了他的願望,反正他將來一定會混成這逼樣的。。。)
另一種轉換是會產生不好的影響的,換句話說,也就是需要付出一些代價的,比如精度,你把要3.1415926535897936轉成成單精度的浮點數,他就會成為3.141592,然後後面的精度就沒有了,這是精度的損失。
還有就是值域的損失,你把乙個int值給乙個short,int值有4個位元組,short只有2個位元組,後者壓根就表示不了那麼大的數字,所以就只能截斷取數字了。這兩種損失都會對程式產生可能的負面影響,所以需要強制執行。
6樓:匿名使用者
接受乙個數,返回乙個數,但返回的數和原數具有不同的型別——所以可以有不同的運算規則
7樓:季末—楓
強制:就是把是需要的型別轉為需要的型別。例如
8樓:匿名使用者
假如你一開始定義了乙個float,實型資料,但你想輸出乙個整型的,就可以強制轉換
#include
void main()
這樣輸回出的就是1,否則是1.000000。
不管定答義1點幾,輸出都是1
9樓:匿名使用者
就是抄程式設計人員自覺地將乙個a型別的資料顯示轉化成b型別的資料.如下面**:
int a, b;
float c = 12.3;
a = c;
b = (int)c;
結果是a與b的值都是12.其中,**a=c是隱式轉換,就是編譯器發現型別不匹配自動給轉的.
而b = (int)c就是強制型別轉換.
一般而言,型別轉換有精度損失或者記憶體大小不匹配問題,編譯器通常會報警告.而使用強制型別轉換時,程式設計人員通過這種方式告訴編譯器,這種轉換造成的問題我已知道,你不用警告我了.
c語言中是什麼意思,C語言中 是什麼意思
詳細,我摘抄了一些,詳細的你看以看看。有很例子,好懂!邏輯運算子把各個運算的變數 或常量 連線起來組成一個邏輯表示式。邏輯運算子有4個,它們分別是 邏輯非 邏輯或 邏輯與 異或 在位運算裡面還有 位與 位或 的運算。什麼是邏輯運算 邏輯運算用來判斷一件事情是 對 的還是 錯 的,或者說是 成立 還是...
在C語言中是什麼意思,C語言中 c 是什麼意思?
勢如雲 這是c語言的邏輯運算子 異或 這個 講的非常詳細,我摘抄了一些,詳細的你看以看看。有很例子,好懂!http hi.baidu.com rect blog item b5be43da977c6adbb7fd4855.html 邏輯運算子把各個運算的變數 或常量 連線起來組成一個邏輯表示式。邏輯...
在c 語言中n 什麼意思,c 語言中 n 的意思是什麼
雖然過去了很久,但是還是說一下,以後的人搜也會看到。n n n 1 n 2 2 1.例如5!5 4 3 2 1 付費內容限時免費檢視 回答親,您好。這邊正在為您整理最精準的答案,請稍等片刻。親,您好。n 10 是得到n除以10以後的餘數n 10 相當於n n 10,是得到n除以10的商的整數部分舉個...