加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

sizeof运算符如何在c中工作

发布时间:2020-12-16 10:19:22 所属栏目:百科 来源:网络整理
导读:我想知道sizeof运算符在C中是如何工作的.在下面的代码中我期望得到输出1但是得到4.因为p指向第一个位置并且在第一个位置有字符并且它的大小应该是1. main(){char a[9]="amit";int *p=a; printf("%d",sizeof((char *)(*p))); } 解决方法 不,你要求的是你的实
我想知道sizeof运算符在C中是如何工作的.在下面的代码中我期望得到输出1但是得到4.因为p指向第一个位置并且在第一个位置有字符并且它的大小应该是1.

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).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读