我想给指针添加一个size_t类型。有些像这样:
void function(size_t sizeA,size_t sizeB){
void *pointer;
pointer=malloc(sizeA);
pointer=pointer+sizeB;
}
在假设的情况下,这不会以段错误结束,问题是:我可以这样做吗?给指针添加size_t类型?结果地址会在地址'size'中吗? 我可以这样做[添加
size_t
到指针]吗?
可以,只要将void
指针强制转换为其他类型:
pointer = ((char*)pointer) + sizeB;
指针的类型取决于指针要前进多少。如果转换为char*
,则sizeB
的每个单元对应一个字节;如果您强制转换为int*
,则sizeB
的每个单元对应的字节数与系统上存储int
所需的字节数相同,以此类推。
然而,你必须确保sizeB
的指针大小的缩放小于或等于sizeA
,否则所得的指针将无效。如果你想做一个可以解引用的指针,缩放后的sizeB
必须严格小于sizeA