C 语言 void 完全用法

void 是 C 语言里 **"空 / 无"** 的意思,核心就 3 个用法:无返回值、无参数、空指针,非常简单。

我用最通俗的方式给你讲清楚,附带能直接运行的例子。


1. 函数没有返回值 → void

当一个函数不需要返回任何数据 时,返回类型写 void。

例子:打印函数,不需要返回值

复制代码
#include <stdio.h>

// 无返回值 → 必须写 void
void sayHello() {
    printf("Hello!\n");
    // 这里不用 return
}

int main() {
    sayHello();
    return 0;
}

注意:

  • 有 void → 函数里不能写 return 数值
  • 想提前退出可以写 return;(不带值)

2. 函数没有参数 → (void)

表示这个函数不接收任何参数 ,比空括号 () 更规范。

复制代码
// 明确表示:无参数
void func(void) {
    printf("我没有参数\n");
}

为什么要用 void?

  • func() 在 C 语言旧标准里 = 参数不确定
  • func(void) = 明确没有参数(更安全、规范)

3. 万能空指针 → void*

这是 void 最强大的用法:void* 是可以指向 任意类型数据的指针(int、char、数组、结构体都行)。

例子:void* 指向不同类型

复制代码
#include <stdio.h>

int main() {
    int a = 10;
    char c = 'A';
    
    void* p;  // 空指针
    
    p = &a;   // 指向 int
    printf("%d\n", *(int*)p);  // 要强转才能取值
    
    p = &c;   // 指向 char
    printf("%c\n", *(char*)p);
    
    return 0;
}

规则:

  • void* 可以存任何地址
  • 取值时必须强转 :(int*)p、(char*)p

4. 常见错误(新手必看)

❌ 错误 1:void 变量

复制代码
void a;  // 错误!void 没有大小,不能定义变量

❌ 错误 2:void 函数返回值

复制代码
void func() {
    return 10;  // 错误!void 不能返回数值
}

❌ 错误 3:直接使用 void* 取值

复制代码
void* p = &a;
printf("%d", *p);  // 错误!必须强转


总结

  • void = 空、无
  • 函数不返回值 → 用 void
  • 函数无参数 → 用 (void)
  • void* = 万能指针,能存任意地址
相关推荐
夏幻灵2 小时前
JavaScript this 面试:五种绑定规则、优先级与常见面试陷阱
开发语言·javascript·面试
程序猿编码3 小时前
榨干 RTX5090 算力!Qwen3 专用单卡推理引擎,手写C++/CUDA 算子实现 MTP 推测解码
开发语言·c++·大模型推理·qwen3·多模态推理
bkspiderx4 小时前
Qt 插件机制:动态扩展应用功能的核心框架
开发语言·qt·元数据·qt 插件·qpluginloader
程序员老陆4 小时前
深入理解 C++ thread_local:线程私有存储的正确打开方式
开发语言·c++·程序设计
沐晓时光4 小时前
C语言入门,深入理解指针(3)
c语言·开发语言
码云数智-园园5 小时前
unique_ptr 还是 shared_ptr?C++ 智能指针选型与内存泄漏实战分析
java·开发语言
禾小西6 小时前
07丨Redis 哨兵机制:主库故障后,如何恢复服务?
java·开发语言·redis
我不是阵雨6 小时前
JDK 21虚拟线程Pinning陷阱:一文拔钉解困
java·开发语言
SuperByteMaster6 小时前
wfi进入之前没有清除basepri, 导致中断优先级不够,wfi 退不出来
c语言
徐小黑ACG6 小时前
Golang 基础05 结构体struct
开发语言·算法·golang