通过void *解析是否可以访问指向不同类型的void *指针?

问题描述 投票:0回答:0
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    char *str = "hi";
    char *str2 = "bye";
    size_t size = 2;
    size_t size2 = 3;
    size_t zero = 0;
    void *pack;

    for(int i = 0; i < size; i++, pack++, str++ ){
        pack = str;
    }

    pack = &size;
    pack += sizeof(size_t);
    pack = &size2;
    pack += sizeof(size_t);
    pack = &zero;
    pack += sizeof(size_t);

    for(int i= 0; i < size2; i++, pack++, str2++){
        pack = str2;
    }  
}

我想知道我是否要调用一个使用“pack”的函数,它的形式是 [char, char, size_t, size_t, size_t, char, char, char]。

我试过从 pack 的开头开始并使用“pack++”解析它,但我的 size_t 变量的地址不存在。如果我有一个解压“pack”变量的函数,size_t 变量会在那里吗?它似乎在主要功能中不起作用。如果不是,我将如何在通过“pack”解析时访问 size_t 变量。在你问之前,我必须为项目使用 void 指针。

c parsing void-pointers
© www.soinside.com 2019 - 2024. All rights reserved.