宏定义实现sizeof中遇到的有关问题
宏定义实现sizeof中遇到的问题
使用宏定义来实现sizeof
#define sizeof_v(value) (size_t)((char *)(&vaule + 1) - (char *)(&value)) 这个宏定义中为什么不能用int * 替换char *
------最佳解决方案--------------------
可能和指针加减有关吧
char *p_char;//一个字节
int *p_int;//假设int为4个字节
p_char++;//指针增加一个字节的位置
p_int++;//指针增加四个字节的位置
你是想求地址差,当然用字节型指针,你可以试试,int型指针求出的值是不是比字节型指针小
话说,为什么要实现sizeof呢
传入的是一个数据类型时这个宏工作吗
------其他解决方案--------------------
sizeof计算出的是以字节数为单位的,某一个类型在内存中占用的字节数。那么应该是以字节为单位。int*就会以4字节为单位移动。
------其他解决方案--------------------
这个要看你如何用这个宏定义了~
使用宏定义来实现sizeof
#define sizeof_v(value) (size_t)((char *)(&vaule + 1) - (char *)(&value)) 这个宏定义中为什么不能用int * 替换char *
------最佳解决方案--------------------
可能和指针加减有关吧
char *p_char;//一个字节
int *p_int;//假设int为4个字节
p_char++;//指针增加一个字节的位置
p_int++;//指针增加四个字节的位置
你是想求地址差,当然用字节型指针,你可以试试,int型指针求出的值是不是比字节型指针小
话说,为什么要实现sizeof呢
传入的是一个数据类型时这个宏工作吗
------其他解决方案--------------------
sizeof计算出的是以字节数为单位的,某一个类型在内存中占用的字节数。那么应该是以字节为单位。int*就会以4字节为单位移动。
------其他解决方案--------------------
这个要看你如何用这个宏定义了~