国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

關于C++中void*的小作用淺析

2020-01-26 13:56:26
字體:
來源:轉載
供稿:網友

本文主要給大家分享了關于C++中void*的一些你可能不了解的小作用,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧。

先來看一段代碼:

#include <iostream> #include <string> using namespace std;  void o(int* x, void* y){  cout << *x << endl;  cout << x << endl;  cout << *(int*)y << endl;  cout << (int*)y << endl; }   int main() {  int a = 1, b = 2;  o(&a, &b); } 

我們看上面的小代碼,函數o傳入兩個地址,一個是a,另一個是b,我們先來看看輸出的情況:

1 0x7038f28b8e98 2 0x7038f28b8e9c 

首先最簡單的,*x表示取值,所以輸出了1,接著x表示&a,也就是a的內存地址,所以我們可以看到輸出了一個地址。這些都是基礎,比較簡單。

比較不好理解的地方來了,void* 指針可以代替任意類型的指針,但是呢,在輸出或者調用的時候,你明確采取強制類型轉換的方式,明確地告訴編譯器這是個什么指針。

所以我們先看第四個,第四個(int*) y相當于告訴編譯器這就是一個整數類型的指針,所以就輸出了地址,那么第三個呢,加上*表示的就是取值,不過這里要記得,千萬不要寫成(int*)*y,因為*y是不存在的(在沒有確定類型之前這樣是會報錯的)所以必須注意。

這種傳遞方法可以用于不定類型的指針傳參,但是由于后面解析的時候需要強制類型轉換,所以在執行效率上稍微低一些,如果是進行大規模調用的話那么請謹慎。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 安化县| 大丰市| 嵩明县| 东莞市| 吉安市| 邯郸市| 镇雄县| 伊金霍洛旗| 项城市| 航空| 瑞昌市| 昌吉市| 庆城县| 西乡县| 太康县| 马边| 安顺市| 都昌县| 南木林县| 河池市| 公主岭市| 德令哈市| 碌曲县| 五原县| 建阳市| 儋州市| 泸水县| 盐源县| 通许县| 平阴县| 通渭县| 仪征市| 措勤县| 利川市| 攀枝花市| 广东省| 岗巴县| 岗巴县| 博白县| 曲水县| 浠水县|