一个问题
char a[20]="You_are_a_girl";
int *ptr=(int *)a;
ptr+=5;
最终*ptr的值应该是多少?
输出验证
开始以为是索引为5的字母的ASCII码,但实际上机验证后发现出入很大,输出了32767这个奇怪的数字

本文探讨了在C++和C语言中,将char类型的指针强制转换为int类型指针并进行偏移操作可能导致的问题。通过实例分析,作者揭示了由于类型大小差异和系统字节序影响,访问到未定义内存区域,从而出现预期之外的数值。
char a[20]="You_are_a_girl";
int *ptr=(int *)a;
ptr+=5;
最终*ptr的值应该是多少?
开始以为是索引为5的字母的ASCII码,但实际上机验证后发现出入很大,输出了32767这个奇怪的数字


被折叠的 条评论
为什么被折叠?