c - 为什么指针不给出其 Ascii 值?

标签 c pointers

这是我目前的代码如下:

#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/

相关文章:

C-char指针和char指针字符串管理

c - 从C中的字符串中提取所有N位数字

关于 C 指针的说明

c - 理解这个难题的解决方案

Apache Cassandra 的 C 客户端库

c++ - GDB 不显示堆栈的十六进制值

c - C堆栈变量是否反向存储?

c - 由于字符串的格式以及所使用的参数,我的 printf 格式说明符将无法编译

c - 编写守护进程调试日志

Delphi - 将变量指针作为字符串传递给另一个函数