我想在指针中添加size_t类型。有人喜欢这样:
void function(size_t sizeA,size_t sizeB){
void *pointer;
pointer=malloc(sizeA);
pointer=pointer+sizeB;
}
在这种情况下,这不会以段错误结束,问题是:我可以这样做吗?将类型size_t添加到指针?结果地址将在地址“大小”中?
答案 0 :(得分:1)
我可以这样做[将
size_t
添加到指针]吗?
是的,您可以,只要您将void
指针转换为其他类型:
pointer = ((char*)pointer) + sizeB;
指针的类型决定了指针的前进程度。如果转换为char*
,则sizeB
的每个单位对应一个字节;如果转换为int*
,则sizeB
的每个单位对应于在系统上存储int
所需的字节数,依此类推。
但是,您必须确保sizeB
缩放您投射的指针大小小于或等于sizeA
,否则结果指针将无效。如果您想创建一个可以取消引用的指针,则缩放sizeB
必须严格小于sizeA
。