首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言基礎

C/C++語言 void 與 void 指針深度解析:本質、限制與用法陷阱

     編輯:C 語言基礎

1. void 的字面含義

void 意為「無類型」,void * 為「無類型指針」,可指向任意類型數據。void 几乎只有「註釋」和「限制程序」的作用——沒人會定義 void a;(編譯報錯 illegal use of type 'void',即便不報錯也無實際意義)。

2. void 的核心作用

  1. 限定函數返回類型:void func() 表示無返回值。
  2. 限定函數參數:void func(void) 表示不接受任何參數。

3. void 指針的類型轉換規則

  • 任意類型指針 → void *:無需強制轉換,直接賦值。
    void *p1; int *p2; p1 = p2; // 合法
  • void * → 具體類型指針:必須強制轉換。
    void *p1; int *p2; p2 = p1; // 錯誤,需 p2 = (int *)p1;

道理:「無類型」可包容「有類型」,但「有類型」不能包容「無類型」。如「男人和女人都是人」成立,但「人是男人」不成立。

4. 典型應用場景

  • 通用內存操作函數(memcpy、memset 等參數用 void *)。
  • 回調函數傳遞上下文指針。
  • 鏈表、泛型容器節點的數據域。

掌握 void 與 void * 的轉換規則,是編寫健壯 C/C++ 代碼的基礎。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved