C语言变量赋值

比如如下代码:

#include <stdio.h>
int main()
{
    int a, b;
    a = 10;
    b = a;
}

看网上说,b = a 是把a变量内存空间中的数据复制到b变量的内存空间中,是这样的吗?
难道a和b的数据完全一样,也占两份内存空间吗?
没有写时拷贝、a和b共用同一内存地址的说法吗?
刚学C,不太明白,谢谢诸位

阅读 2.4k
2 个回答
main.c
#include <stdio.h>
int main()
{
    int a, b;
    a = 10;
    b = a;
    printf( "addr: 0x%08x\n", &a);
    printf( "addr: 0x%08x\n", &b);
    printf( "size: %zd\n", sizeof(a));

}
[xxx@xxx]# ./a.out
addr: 0x68a28bcc
addr: 0x68a28bc8
size: 4

两个地址相差四个字节,显然不在同一个地址

因为C是静态类型的语言,因此两个不同变量就是位于两个不同内存地址的,即使内容完全一样。请注意,是“变量”!

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进