我是C语言新手,这些有什么区别。
a = b;
和
*a = *b;
假设都是整数指针)。
两者相似,都是将右侧的值赋给左侧的语句。
与
a = b;
你做 a
指向 b
是指向的。现在你有两个指向同一个位置的指针。
例如,假设我们有以下设置。
int x = 10;
int y = 20;
int *a = &x; // Make a point to the variable x
int *b = &y; // Make b point to the variable y
那么如果你做
a = b;
两者 a
和 b
将指向变量 y
.
随着
*a = *b;
(假设两个 a
和 b
指向有效的地方),你把它的值赋予 哪儿 b
指的是 哪儿 a
是指向性的。
如果你了解数组,可能会更容易将最后一个赋值看作是
a[0] = b[0];
它做的事情和 *a = *b
.
以上面同样的例子。
int x = 10;
int y = 20;
int *a = &x; // Make a point to the variable x
int *b = &y; // Make b point to the variable y
然后
*a = *b;
价值 x
和 y
将是一样的,它将是 20
.
首先,我们假设以下声明。
int x = 1;
int y = 2;
int *a = &x;
int *b = &y;
在这之后,以下所有内容都是真的。
a == &x // int * == int *
*a == x == 1 // int == int == int
b == &y // int * == int *
*b == y == 2 // int == int == int
在... a = b
那么,以下情况为真。
a == &y
*a == y == 2
b == &y
*b == y == 2
我们已经分配了 b
到 a
所以现在 a
和 b
都指向 y
.
如果你写的是 *a = *b
那么,我们就会有
a == &x
*a == x == 2
b == &y
*b == y == 2
而不是指向 a
到 y
,我们已经将对象的值赋予了 b
指向 (y
)到对象中,该 a
指向(x
),所以现在两个 x
和 y
有价值 2
.
我想看看下面的指南,因为它几乎回答了你的问题。
其实a=b和*a=*b没有区别,都是一样的,这里a和b是指向不同的元素。
当你写这句话时。
*a=*b
这意味着指向b的元素的值被分配到a中,而当你写这句话的时候:
a=b
意思是b所包含的元素的地址现在被分配到a中,所以两者是一样的。
下面是代码,以便更好地理解。
#include<iostream>
using namespace std;
int main()
{
int x=10,y=20;
int *a,*b;
a=&x;
b=&y;
a=b;
cout<<*a<<" "<<*b<<endl;
a=&x;
b=&y;//for change the value of a and b we assign again
cout<<*a<<" "<<*b<<endl;
*a = *b;
cout<<*a<<" "<<*b<<endl;
}