这是我目前的代码如下:
#include<stdio.h>
int main() {
/* code */
char a[5] = {'a','b'};
int *p =a;
printf("%d\n", *p);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我执行我的代码时,它显示25185而不是给我一个ASCII值.
为什么会这样?
谢谢
这是未定义的行为,因此任何事情都可能发生.至于你特别注意的是什么,这里有解释:
如果数组仅在声明时初始化了某些值,则其余值为零.所以你的阵列a是'a', 'b', '\0', '\0', '\0'.当指向此数组开头的指针被解释为32位小端时int,其值为0x00006261或十进制为25185.
| 归档时间: |
|
| 查看次数: |
108 次 |
| 最近记录: |