c语言 void**类型转换,void *和其他指针的转化
生活随笔
收集整理的這篇文章主要介紹了
c语言 void**类型转换,void *和其他指针的转化
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
==1===在c語言中===============
從int * 到 char *的轉化不兼容,但是編譯能通過。
將void *和其他類型的指針相互賦值不出現警告,這在c語言中是允許的。
=====2====在c++中類型要求很高,不允許不同類型指針之間的相互賦值,void *指針例外(任何類型指針都可以賦值給void指針,但是反之不行。也就是說,如果需要void指針類型轉化成其他指針類型,需要將此NULL類型強制轉換。
3====3=那么c/c++中void指針的有什么用呢?
- . 當參數可以是任意類型的指針的時候,就用void *
- . 使用void *指針之前要進行強制轉換。
4======4.使用void指針要小心===
-. void指針不能進行算法操作,因為ANSI標準規定:能進行算法操作的指針必須是確定其指向的數據類型的大小的。能夠確定指向的數據類型的指針可以運算是因為,例如:指針p,那么指針p++,就是對p的地址增加p所指向的數據類型那么大小的長度。所以,如果有一個指針你不知道它指向的數據類型的大小,那么再做p的運算的時候,比如p++,就不知道到底要在p原來的地址上增加多少個長度?這種不確定就產生了相應的規則:不明確指向的數據類型的void指針不能進行運算。
總結
以上是生活随笔為你收集整理的c语言 void**类型转换,void *和其他指针的转化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java stream 多个filter
- 下一篇: vlc 缓冲大小 设置_用libvlc