将size_t变量添加到指针

时间:2016-11-06 00:47:54

标签: c pointers add size-t

我想在指针中添加size_t类型。有人喜欢这样:

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

在这种情况下,这不会以段错误结束,问题是:我可以这样做吗?将类型size_t添加到指针?结果地址将在地址“大小”中?

1 个答案:

答案 0 :(得分:1)

  

我可以这样做[将size_t添加到指针]吗?

是的,您可以,只要您将void指针转换为其他类型:

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

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

但是,您必须确保sizeB缩放您投射的指针大小小于或等于sizeA,否则结果指针将无效。如果您想创建一个可以取消引用的指针,则缩放sizeB必须严格小于sizeA