在C语言中,变量之间赋值是是一个变量把自己值拷贝了一份给另一个变量吗?

程序如下:
int a=3,b=6;
int k;
k=a;//a给k赋值,是a把自己的值拷贝了一份给k吗
a=b;//b给a赋值,是b把自己的值拷贝了一份给a吗
b=k;//k给b赋值,是k把自己的值拷贝了一份给b吗
我的分析如何如下图,大家看看对吗

如果是数组的话就不合适 t=a[1];a[1]=a[2];此时a[2]中原来的值就跑到a[1]中去了 因为这牵扯到compile阶段需要开空间,整个数组占一个空间,赋值实则把存储在原空间的值给拿走了 空间也就空出来了
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-07-17
对 是拷贝,因为是c语言,没有引用一说
在c++中,其实可以这么写
k = &a k和a的值都一样,但是不论k改变还是a改变 两个变量会同时改变
参考下追问

我是想交换下a和b的值 为什么就交换不了呢

追答

我知道你说的是什么情况了,如果在当前函数,你那么写没问题,如果是专门的交换函数就不行了
void swap(int *a, int *b)
{
int t = *a;
*a = *b;
*b = t;
}

你试试吧

追问

你这种写法 我知道可以 我想知道我的写法为什么不能交换值了 帮忙分析下 谢谢

本回答被提问者和网友采纳
第2个回答  2012-07-17
答案是全是 你这样写 最后的结果是 a b的值相互换了
第3个回答  2012-07-17
你肯定专门写了 个函数。。。形参和实参没有对应

完全正确
第4个回答  2012-07-17
可以这么理解追问

我是想交换下a和b的值 为什么就交换不了呢

追答

这能够交换的 除非你把它做成了swap()函数

追问

我跑程序了 不能交换啊 哈哈

追答

考 要不要这么蠢 这在主函数里能交换 你写在自己的函数里不能交换

追问

为什么在主函数可以交换,单独写成函数就不能交换 ,给说说

相似回答