日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言怎么让写的函数兼容int型和char型_既然C语言void指针是“万能指针”,那么malloc还需类型转换吗?...

發(fā)布時間:2023/12/15 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言怎么让写的函数兼容int型和char型_既然C语言void指针是“万能指针”,那么malloc还需类型转换吗?... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在C語言程序開發(fā)中,動態(tài)內(nèi)存分配是不可避免的,而調(diào)用 malloc()/free() 庫函數(shù)實現(xiàn)這一過程是方便的,事實上,在很多C語言程序中,malloc/free 庫函數(shù)的使用相當(dāng)頻繁,它倆的C語言函數(shù)原型如下,請看:

void *malloc(size_t size);void free(void *ptr);

malloc() 函數(shù)需要類型轉(zhuǎn)換嗎?

正常情況下,malloc() 函數(shù)會從堆中申請 size 字節(jié)的內(nèi)存,并且將這塊內(nèi)存的首地址返回,原則上,系統(tǒng)不會再將被 malloc() 申請的內(nèi)存分配給其他代碼使用,除非 free() 函數(shù)將 malloc() 申請的內(nèi)存釋放。

malloc() 函數(shù)需要類型轉(zhuǎn)換嗎?

讀者應(yīng)該注意到,malloc() 函數(shù)的返回值是 void * 指針型的。看過我之前文章的讀者應(yīng)該明白,在C語言中,void * 指針是不能夠直接用于索引數(shù)據(jù)的。

void * 指針是不能夠直接用于索引數(shù)據(jù)的

因此在實際的C語言程序開發(fā)中,程序員調(diào)用 malloc() 函數(shù)時,一般都會定義其他類型的指針,例如:

char *cp = malloc(size);

讀者看到這里,可能會產(chǎn)生疑問:malloc() 函數(shù)的返回值類型是 void * 指針型,而變量 cp 則是 char * 指針型,似乎出現(xiàn)了類型不匹配的情況,是否需要類型轉(zhuǎn)換呢?

是否需要類型轉(zhuǎn)換呢?

事實上,的確不少C語言程序員在調(diào)用 malloc() 函數(shù)時會使用類型轉(zhuǎn)換:

char *cp = (char *)malloc(size);int *ip = (int *)malloc(size * sizeof(int));...

那么,調(diào)用 malloc() 函數(shù)時,究竟需要不需要類型轉(zhuǎn)換呢?

不需要?

有程序員認(rèn)為,C語言經(jīng)過這么多年的發(fā)展,對于 malloc() 函數(shù),如今似乎不再需要類型轉(zhuǎn)換了,因為 void * 指針會自動的并且安全的被轉(zhuǎn)換為對應(yīng)類型的指針。void * 指針在很多C語言教材中被稱為“萬能指針”,這里就是一個體現(xiàn)。

void * 指針在很多C語言教材中被稱為“萬能指針”

既然 void * 指針可以自動的被轉(zhuǎn)換成對應(yīng)的指針類型,那么再寫類型轉(zhuǎn)換代碼似乎就“多余”了,反而會讓整個C語言代碼啰嗦臃腫,損失可讀性,尤其是指針類型名很長的時候,例如:

struct this_is_test *p = (struct this_is_test *)malloc(size);// 不寫類型轉(zhuǎn)換代碼struct this_is_test *p = malloc(size);

上面的C語言代碼顯然有重復(fù)部分,而且這段重復(fù)的C語言代碼的“類型轉(zhuǎn)換功能”也是多余的,要是以后需要修改結(jié)構(gòu)體 this_is_test 的名字,還需要修改強制類型轉(zhuǎn)換部分的代碼,略顯繁瑣。與之相對的,下面這行C語言代碼明顯簡潔許多。

下面這行C語言代碼明顯簡潔許多

這么看來,似乎對 malloc() 函數(shù)做類型轉(zhuǎn)換“百害而無一利”了,有程序員甚至認(rèn)為,在C語言程序開發(fā)中,調(diào)用 malloc() 函數(shù)使用類型轉(zhuǎn)換,只是因為不知道類型轉(zhuǎn)換會帶來的潛在不利而已。

需要?

不過,也有C語言程序員持反對意見,他們認(rèn)為,在調(diào)用 malloc() 時使用類型轉(zhuǎn)換可以讓代碼在 C語言和C++之間可移植,有些程序員以為自己在寫C語言程序,但是他們實際上還是會用到C++的一些特性。

在 C語言和C++之間可移植

另外,調(diào)用 malloc() 函數(shù)使用類型轉(zhuǎn)換還可以發(fā)現(xiàn)一些潛在的風(fēng)險,例如有的C語言程序員會在開發(fā)中弄混 type * 和 type ** ,如果沒有顯式的類型轉(zhuǎn)換,這樣的錯誤就會被編譯器隱藏掉了。

因此,在對 malloc() 函數(shù)的返回值做數(shù)據(jù)類型轉(zhuǎn)換的過程,本身就是C語言程序員自檢代碼的過程,這樣更加容易在開發(fā)階段就發(fā)現(xiàn) bug。而且,如果C語言程序出現(xiàn)了數(shù)據(jù)類型相關(guān)的錯誤,調(diào)用 malloc() 函數(shù)做了類型轉(zhuǎn)換肯定能夠更加方便的定位錯誤。

小結(jié)

弄清楚在C語言程序開發(fā)中調(diào)用 malloc() 函數(shù)時,做不做類型轉(zhuǎn)換的各自特點后,應(yīng)該能夠發(fā)現(xiàn)其實各有各的好處,那究竟是否需要做類型轉(zhuǎn)換,就在于程序員自己的開發(fā)習(xí)慣了。

點個贊再走吧

歡迎在評論區(qū)一起討論,質(zhì)疑。文章都是手打原創(chuàng),每天最淺顯的介紹C語言、linux等嵌入式開發(fā),喜歡我的文章就關(guān)注一波吧,可以看到最新更新和之前的文章哦。

總結(jié)

以上是生活随笔為你收集整理的c语言怎么让写的函数兼容int型和char型_既然C语言void指针是“万能指针”,那么malloc还需类型转换吗?...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 色哟哟精品观看 | 国产网站大全 | 亚洲精品美女视频 | 夜夜躁狠狠躁日日躁av | 蜜桃av久久久亚洲精品 | 一区二区视频免费 | 国产xxx在线 | 欧美激情性生活 | 亚洲精品在线网站 | www超碰 | 在线观看三级网站 | 欧美视频一区二区 | 久久国语对白 | 久久久久久久久久久久久久久久久久久久 | 国产精品久久久久久久av福利 | 8mav在线| 免费一级全黄少妇性色生活片 | 欧美亚洲免费 | 99久久九九 | 亚洲专区中文字幕 | 免费小视频在线观看 | 一区二区三区波多野结衣 | 欧洲色综合 | 精品五月天 | 成人免费视频网站 | 亚洲天堂欧美在线 | 紧身裙女教师三上悠亚红杏 | 潘金莲三级野外 | wwwxxoo| 亚洲成a人无码 | 国产精品久久久久久久一区探花 | 国产精品黄色av | 黄色免费国产 | 精品国产av色一区二区深夜久久 | 国产美女流白浆 | 国产三级按摩推拿按摩 | 黄色网址你懂的 | 日本一区二区三区在线观看 | 2019天天干天天操 | 成人欧美一区二区三区白人 | 中出视频在线观看 | 亚洲第一色视频 | 久久99精品久久久久久水蜜桃 | 天天操天天射天天爽 | 手机在线成人 | 欧美成人三级精品 | 狗爬女子的视频 | 国产婷婷色一区二区在线观看 | 亚洲av成人片色在线观看高潮 | 欧美一区高清 | 国产网站大全 | 欧美bbbbbbbbbbbb精品 | 久久久噜噜噜www成人 | 免费视频日韩 | 国产一区二区三区四区视频 | 性生交大全免费看 | 人体私拍套图hdxxxx | 国产真实自拍 | 天堂网成人| 国产精品色悠悠 | 日本免费高清 | 91精品国产一区二区三区 | 91视频看| 亚洲久久久| 激情天天| 涩里番在线观看 | 四虎影院成人 | 天天激情 | 欧洲精品码一区二区三区免费看 | 东北女人av | 日日夜夜综合 | 看特级毛片 | 亚洲视频手机在线 | jizz黄色片| 蜜桃视频日韩 | 91射区| 偷拍中国夫妇高潮视频 | 视频毛片 | 曰本不卡视频 | 91福利一区二区 | 午夜精品一区二区三区在线 | 青青啪啪 | 亚洲色网址 | 国产性一乱一性一伧一色 | 国产美女永久无遮挡 | 性色av网 | 使劲插视频 | 波多野结衣一区 | wwwwxxxx国产| 国产精品无码一区二区三区三 | 一区二区三区免费在线 | 大香伊人中文字幕精品 | 都市激情 自拍偷拍 | 精品人妻无码一区二区色欲产成人 | 成人激情电影在线观看 | 香蕉视频免费看 | 黄色aa视频| 国产a∨精品一区二区三区仙踪林 | 精品女同一区二区三区 |