c语言 void**类型转换,void *和其他指针的转化
==1===在c語言中===============
從int * 到 char *的轉(zhuǎn)化不兼容,但是編譯能通過。
將void *和其他類型的指針相互賦值不出現(xiàn)警告,這在c語言中是允許的。
=====2====在c++中類型要求很高,不允許不同類型指針之間的相互賦值,void *指針例外(任何類型指針都可以賦值給void指針,但是反之不行。也就是說,如果需要void指針類型轉(zhuǎn)化成其他指針類型,需要將此NULL類型強(qiáng)制轉(zhuǎn)換。
3====3=那么c/c++中void指針的有什么用呢?
- . 當(dāng)參數(shù)可以是任意類型的指針的時(shí)候,就用void *
- . 使用void *指針之前要進(jìn)行強(qiáng)制轉(zhuǎn)換。
4======4.使用void指針要小心===
-. void指針不能進(jìn)行算法操作,因?yàn)锳NSI標(biāo)準(zhǔn)規(guī)定:能進(jìn)行算法操作的指針必須是確定其指向的數(shù)據(jù)類型的大小的。能夠確定指向的數(shù)據(jù)類型的指針可以運(yùn)算是因?yàn)?#xff0c;例如:指針p,那么指針p++,就是對(duì)p的地址增加p所指向的數(shù)據(jù)類型那么大小的長(zhǎng)度。所以,如果有一個(gè)指針你不知道它指向的數(shù)據(jù)類型的大小,那么再做p的運(yùn)算的時(shí)候,比如p++,就不知道到底要在p原來的地址上增加多少個(gè)長(zhǎng)度?這種不確定就產(chǎn)生了相應(yīng)的規(guī)則:不明確指向的數(shù)據(jù)類型的void指針不能進(jìn)行運(yùn)算。
總結(jié)
以上是生活随笔為你收集整理的c语言 void**类型转换,void *和其他指针的转化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java stream 多个filter
- 下一篇: vlc 缓冲大小 设置_用libvlc