【 在 meiguanxi (meiguanxi) 的大作中提到: 】
: 标 题: 小白请教个问题
: 发信站: 水木社区 (Wed Apr 15 14:22:44 2020), 站内
:
: char c1[] = { 'a', 'b', 'c', 'd', 'e' };
: int myInt = *(int *)(&c1);
: int myInt1 = *(int *)(&c1+1);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
我觉得就是这句话可能有点毛病。
&c1 这个东西严格来讲,是一个指向 char[5] 的数组的指针。
所以它 + 1 以后,就指向相邻的下一个这么大的数组。
: int myInt2 = *(int *)(&c1[5]);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
这个虽然越界了,但是 c++ 编译器一般不管这种事情。
:
: 为啥第三句代码报错了?说“错误 C4700 使用了未初始化的局部变量“c1” ”
:
: 但是如果把第三句和第四句代码交换下顺序,就不会报错,何解?
:
:
:
:
:
: --
: ※ 修改:·meiguanxi 于 Apr 15 14:23:15 2020 修改本文·[FROM: 114.247.188.*]
: ※ 来源:·水木社区
http://www.newsmth.net·[FROM: 114.247.188.*]
--
修改:meiguanxi FROM 114.247.188.*
FROM 211.95.56.*