代码之家  ›  专栏  ›  技术社区  ›  Dan

将整数赋给取消引用的字符指针

c
  •  0
  • Dan  · 技术社区  · 4 年前
    int main(){
     char a = 5;
     char *p = &a;        // 8 bits
     int num = 123456789; // 32 bits
     *p = num;
     return 0;
    }
    

    作为 a 是1字节 num *p = num 在将num分配给 ? 或者一个32位的值被写入内存并破坏堆栈?

    1 回复  |  直到 4 年前
        1
  •  2
  •   dbush    4 年前

    因为你要分配一个 int 对a的价值 char ,该值将以实现定义的方式转换为 烧焦 num 将是指定的值)。

    事实上你取消了一个 char * 烧焦 a = num; .