void*指针的一些冷知识

本文详细解释了在C/C++中void指针的算术运算原理。由于void指针没有固定大小,通常不能直接进行加减操作。但在GCC等编译器中,可以通过非标准扩展实现,将void指针视作char*类型进行字节级别的加减操作。

Pointer (computer programming)
Pointer arithmetic cannot be performed on void pointers because the void type has no size, and thus the pointed address can not be added to, although gcc and other compilers will perform byte arithmetic on void* as a non-standard extension, treating it as if it were char *.

Pointer Arith
In GNU C, addition and subtraction operations are supported on pointers to void and on pointers to functions. This is done by treating the size of a void or of a function as 1.

 

so...sizeof(void *) = sizeof(char *) = 4.

by the way, sizeof(char) = 1.

 

如果一个变量point的类型是void*,他在point++ ,point = point + 1 等操作的时候,是往下数1个字节。因为void*会被默认当作char*

 

转载于:https://www.cnblogs.com/sunfishgao/p/4762177.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值