C语言中的这些语句有什么区别?

问题描述 投票:0回答:1

我是C语言新手,这些有什么区别。

a = b;

*a = *b;

(假设两者都是整数指针。)

c pointers
1个回答
3
投票

两者相似,都是将右侧的值赋给左侧的语句。

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;

两者 ab 将指向变量 y.


随着

*a = *b;

(假设两个 ab 指向有效的地方),你把它的值赋予 哪儿 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;

价值 xy 将是一样的,它将是 20.


1
投票

首先,我们假设以下声明。

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  

我们已经分配了 ba所以现在 ab 都指向 y.

如果你写的是 *a = *b那么,我们就会有

 a == &x
*a ==  x == 2
 b == &y       
*b ==  y == 2  

而不是指向 ay,我们已经将对象的值赋予了 b 指向 (y)到对象中,该 a 指向(x),所以现在两个 xy 有价值 2.


0
投票

我想看看下面的指南,因为它几乎回答了你的问题。

C++中的指针变量和引用变量有什么区别?


0
投票

其实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;

}
© www.soinside.com 2019 - 2024. All rights reserved.