将 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
.
我想向指针添加 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
.