And*_*res 4 c pointers size-t addition
我想向指针添加 size_t 类型。有些像这样:
void function(size_t sizeA,size_t sizeB){
void *pointer;
pointer=malloc(sizeA);
pointer=pointer+sizeB;
}
Run Code Online (Sandbox Code Playgroud)
在假设的情况下,这不会以段错误结束,问题是:我可以这样做吗?将类型 size_t 添加到指针?结果地址将在地址“大小”中?
我可以这样做[添加
size_t到指针]吗?
是的,可以,只要将指针强制转换void为其他类型:
pointer = ((char*)pointer) + sizeB;
Run Code Online (Sandbox Code Playgroud)
指针的类型决定了指针要前进的程度。如果转换为char*,则 的每个单元sizeB对应一个字节;如果转换为int*, 的每个单位sizeB对应于在系统上存储 an 所需的字节数int,依此类推。
但是,您必须确保sizeB所转换的指针大小的缩放值小于或等于sizeA,否则生成的指针将无效。如果你想创建一个可以取消引用的指针,scaledsizeB必须严格小于sizeA。
| 归档时间: |
|
| 查看次数: |
8264 次 |
| 最近记录: |