c - C 中的指针与类型转换

标签 c arrays pointers casting

#include<stdio.h> 
int main() 
{ 
    int a; 
    char *x; 
    x = (char *) &a; 
    a = 512; 
    x[0] = 1; 
    x[1] = 2; 
    printf("%d\n",a); 
    return 0; 
}

我无法理解输出是如何依赖于 513 甚至机器的事实?我能感觉到类型转换起着重要作用,但幕后发生了什么,有人能帮我想象一下这个问题吗?

最佳答案

int a 以 4 个字节存储在内存中。数字 512 在您的机器上表示为:

0 2 0 0

当您分配给 x[0]x[1] 时,它会将其更改为:

1 2 0 0

这是数字 513

这是机器相关的,因为多字节数字中的字节顺序不是由 C 语言指定的。

关于c - C 中的指针与类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43664832/

相关文章:

arrays - 将 .csv 数据导入数组

c++ - 指针是如何工作的

c - 为什么这个冒泡排序有问题?

c - 将 char* 类型转换为 int* 是否未定义?

代码错误结构

javascript - JavaScript 中指向全局变量的指针

c - 如何分配内存并用指向二维数组的指针填充结构

c - 速率不起作用,它总是输出 0.000

c++ - 从函数中获取两个数组并将它们存储在 C++ 中的不同数据类型数组中

javascript - 为什么以下 javascript 数组排序决定我的两个排序顺序参数未定义?