c语言void*的使用

c语言中void除了作为函数的返回值外,一般不单独使用,但是void *有很多用途;

void *的理解:

`void *` 是一个无类型指针,其用处非常广泛。主要有以下用途:

1. 作为函数参数:`void *` 可以作为函数参数,用于传递任意类型的数据,因此可以编写更加通用的函数。例如,`memcpy`函数就使用了 `void *` 类型的指针作为源和目标地址的参数,从而达到复制任意类型数据的目的。

2. 作为函数返回值:`void *` 可以作为函数的返回值,用于指向函数内部动态分配的内存地址。例如,`malloc`函数就是返回一个 `void *` 类型的指针,指向所分配的内存地址。

3. 动态类型转换:使用 `void *` 可以在运行时根据具体数据类型进行动态类型转换。在语言标准库中,就有一些对 `void *` 进行转换的函数,例如 `memset`、`memcpy`、`qsort` 等函数。

4. 在数据结构中的应用:`void *` 可以作为某些数据结构的内部节点指针类型,通过接口函数对节点进行操作。例如链表、树等数据结构类型。

总之,`void *` 的主要作用是提供了一种通用的指针类型,可以在一些数据类型不确定的场合进行处理和转换,从而让程序灵活性更高。

void *的理解实例:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    char a = 50;
    char *b = &a;
    char **c = &b;
    void *d = (void *)c;

    printf("*d = %d\n", **(char **)d);

    char ***e = &c;
    void *f = (void *)e;
    printf("*f = %d\n", ***(char ***)f);

    char ****g = &e;
    void *h = (void *)g;
    printf("*h = %d\n", ****(char ****)h);   

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值