C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了sizeof运算符如何在c中工作大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想知道sizeof运算符在C中是如何工作的.在下面的代码中我期望得到输出1但是得到4.因为p指向第一个位置并且在第一个位置有字符并且它的大小应该是1.

@H_146_7@main() { char a[9]="amit"; int *p=&a; printf("%d",sizeof((char *)(*p))); }

解决方法

不,你要求的是你的实现中字符指针的大小为4.

是因为你将取消引用的int指针p转换为char指针,然后询问它的大小.

打破它:

sizeof((char *)(*p))
       |       \__/
       |         \_ Dereference p to get an int.
       \___________/
             \_____ Convert that to a char * (size = 4).

如果你想处理你的int的第一个字符(毕竟,你是一个你投射的字符数组),你应该使用:

sizeof(*((char*)(p)))

这是int指针,强制转换为char指针,然后解除引用.

打破这种情况:

sizeof(*((char *)(p)))
       | \________/
       |         \_ Get a char * from p (an int *)
       \___________/
             \_____ Dereference that to get a char (size = 1).

大佬总结

以上是大佬教程为你收集整理的sizeof运算符如何在c中工作全部内容,希望文章能够帮你解决sizeof运算符如何在c中工作所遇到的程序开发问题。

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

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