美文网首页
C语言之void *的使用

C语言之void *的使用

作者: 那个混子 | 来源:发表于2024-02-27 00:41 被阅读0次

最近在写一个调参系统,为了方便变量的传入和修改,遇到了个问题,

不同的类型变量传入,我使用结构体数组列表来储存,但是其中变量的指针,我不知道要怎么处理,因为变量类型不固定,

由此我想到了使用联合体的数据类型,但是联合体只是共用一个区域,指针不方便指到指定的位置,比较麻烦。

后面通过AI的提示使用void *类型解决

在C语言中,void *address;表示一个指向任意类型的指针。这里使用void *address;是为了使结构体能够存储不同类型的变量地址。通过使用void *类型,我们可以将任何类型的指针赋值给这个指针,然后在函数内部根据结构体中的类型信息进行类型转换,从而实现对不同类型变量的操作。

简易的示例代码如下

// 定义结构体
typedef struct {
    char name[20];
    char type; // 'i'表示int, 'f'表示float, 'd'表示double
    double step;
    void *address;
} VariableInfo;

在操作过程中只要根据不同类型的数据进行强制转换类型,指明类型即可!

// 函数实现
void add_step(VariableInfo var_info) {
    switch (var_info.type) {
        case 'i':
            *((int *)var_info.address) += (int)var_info.step;
            break;
        case 'f':
            *((float *)var_info.address) += (float)var_info.step;
            break;
        case 'd':
            *((double *)var_info.address) += (double)var_info.step;
            break;
        default:
            printf("Unsupported type: %c
", var_info.type);
            break;
    }
}

简单记录一下,睡觉了

相关文章

  • 第五章 指针与数组

    5.1 指针与地址 指针是保存变量地址的变量。 ANSI C使用void*(指向void的指针)代替 char* ...

  • C++ - void 与 void*

    一、 Void 关键字的使用规则: void 体现了一种抽象,这个世界上的变量都是“有类型”的 二、含义 void...

  • 2019-04-25 重新认识void

    重新认识void 在初学c/c++时感觉void是一个很不起眼的关键字。因为在c++中我使用的还是比较少的。但是到...

  • 初学C语言

    初学C语言——指针的使用 #include void swap(int*a,int*b); int main(i...

  • OpenCV2 图像叠加

    C++:void Mat::copyTo(OutputArraym)const C++:void Mat::cop...

  • [C++之旅] 6 内存的申请和释放

    [C++之旅] 6 内存的申请和释放 申请内存的方式 C语言方式 申请内存使用函数void *malloc(siz...

  • __bridge的用法

    __bridge作为OC与C语言之间的桥接符号使用, 简单的用法:

  • 函数指针的练习~函数指针数组

    #include void a(int,int); void b(int,int); void c(int,int...

  • 关于C++中的void及void *

    void关键字的使用规则: 1. 如果函数没有返回值,那么应声明为void类型; 2. 如果函数无参数,那么应声明...

  • C 库函数 – memset()

    描述C 库函数 void memset(void str, int c, size_t n) 复制字符 c(一个无...

网友评论

      本文标题:C语言之void *的使用

      本文链接:https://www.haomeiwen.com/subject/gedtzdtx.html