C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了C/C++指针,ptr 1 = ptr 1字节或ptr 1 * sizeof(pointer_type)?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

any_type *ptr = (any_type*)malloc(sizeof(any_type)*size);
my_ptr = ptr+1;
memcpy(dst,my_ptr,sizeof(any_type));

将my_ptr指向ptr之后的1个字节,还是指向ptr后的sizeof(any_type)字节?
对齐选项如何影响答案?签名/未签名类型是不同的?

解决方法

指针运算是根据指针的静态类型[*]的大小执行的,因此它将有效地添加sizeof * ptr.成员的对齐将考虑对象的大小,作为类型的对齐(对象末尾的填充).

struct test {
   int a;
   char b;
};

如果类型是4字节对齐的话,测试的大小将不是5(假设32位整数).

[*]请注意,在C中,您可以将派生对象的地址分配给基类,但指针算术将对指针的类型进行操作,而不是实际对象:

struct base { int x; };
struct derived : base { int y; };
int main() {
   base * p = new derived[10];
   base * q = p+1;             // this does not point to the second `derived`!!!
}

大佬总结

以上是大佬教程为你收集整理的C/C++指针,ptr 1 = ptr 1字节或ptr 1 * sizeof(pointer_type)?全部内容,希望文章能够帮你解决C/C++指针,ptr 1 = ptr 1字节或ptr 1 * sizeof(pointer_type)?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: