这是我目前的代码如下:
#include<stdio.h>
int main() {
/* code */
char a[5] = {'a','b'};
int *p =a;
printf("%d\n", *p);
return 0;
}
当我执行我的代码时,它显示 25185
而不是给我一个 ASCII 值。
为什么会这样?
谢谢
最佳答案
这是未定义的行为,所以任何事情都有可能发生。至于你具体观察到的是什么,这里是解释:
如果数组在声明时只初始化了部分值,则其余值为零。所以你的数组 a
是 'a', 'b', '\0', '\0', '\0'
。当指向此数组开头的指针被解释为 32 位小端 int
时,其值为 0x00006261,即十进制的 25185。
关于c - 为什么指针不给出其 Ascii 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54641362/