为什么指针不给它的Ascii值?

Sam*_*ana 3 c pointers

这是我目前的代码如下:

#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值.

为什么会这样?

谢谢

Gov*_*mar 7

这是未定义的行为,因此任何事情都可能发生.至于你特别注意的是什么,这里有解释:

如果数组仅在声明时初始化了某些值,则其余值为零.所以你的阵列a'a', 'b', '\0', '\0', '\0'.当指向此数组开头的指针被解释为32位小端时int,其值为0x00006261或十进制为25185.

  • 在那里,你走了,越过边缘!恭喜. (2认同)