c - int x=259中p指向什么; char *p = (char*)&x;?

标签 c pointers

我遇到了一个挥舞代码,但我无法理解它:

     int x=259;
     char *p = (char*)&x;
     printf("%d ", *p);
     printf("%d ", *(p + 1));
     printf("%d ", *(p + 2));
     printf("%d ", *(p + 3));

输出为:

     3 1 0 0

我尝试将 x 更改为许多不同的数字,结果让我更加困惑

     X            Output
    127           127 0 0 0
    128          -128 0 0 0
  256*127         0 127 0 0
  256*128         0 -128 0 0

等等...

谁能解释一下 p 指向什么

    char *p = (char*)&x;

它打印出什么。 谢谢。

最佳答案

 int x=259;
 char *p = (char*)&x;

x 是 4 个字节 0x03 0x01 0x00 0x00 因为您所在的机器是小端字节序(请参阅 https://en.wikipedia.org/wiki/Endianness )

所以

  • p 指向第一个字节 = 3
  • p+1 点为 1
  • p+ 2 和 + 3 指向 0

您可以对其他值进行相同的分析。

关于c - int x=259中p指向什么; char *p = (char*)&x;?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48568951/

相关文章:

c - 如何编写更好的 strlen 函数?

C++:当你有指针时,为什么需要引用?

c - 如何在 C 中返回指向结构体数组的指针?

c - 在 if block 中声明变量的确切效果

c - 什么 C 编译器与 Borland Turbo Link 5.1 匹配?

c - 如何在 C 中的被调用函数中使用文件指针

c - 如何更新变量代表的地址?

c++ - char* 如何以十六进制读取这个整数?它在 ostream::write() 中如何工作?

c++ - 客户端验证算法?

c 用作矩阵索引的指针