将 size_t 变量添加到指针

Adding a size_t variable to a pointer

我想向指针添加 size_t 类型。有些像这样:

void function(size_t sizeA,size_t sizeB){
    void *pointer;
    pointer=malloc(sizeA);
    pointer=pointer+sizeB;
}

假设这不会以段错误结束,问题是:我可以这样做吗?向指针添加类型 size_t?结果地址将在地址 'size'?

Can I do this [add size_t to a pointer]?

是的,你可以,前提是你将 void 指针转换为其他类型:

pointer = ((char*)pointer) + sizeB;

指针的类型决定了指针要前进多少。如果强制转换为char*,则sizeB的每个单元对应一个字节;如果转换为 int*sizeB 的每个单元对应于在系统上存储 int 所需的字节数,依此类推。

但是,您必须确保sizeB 缩放的指针大小小于或等于sizeA,否则生成的指针将无效。如果你想制作一个可以被取消引用的指针,缩放sizeB必须严格小于sizeA.