指针赋值
当多个指针同时指向同一个地址,那么这些指针都是这个地址的引用,引用就相当于本身了,所以会引起改变。举一个链表的例子应该可以帮助理解。 平时我们操作链表的时候,通常把第一个节点head赋值给一个临时指针temp,如果通过临时指针temp来改变下一个节点,比如说temp直接指向链表的第三个节点,那么head的下一个节点是原链表的第二个节点还是第三个节点呢?答案是第三个。
#include <iOStream>
using namespace std;
struct Node
{
int data;
Node* next;
//
Node(int x) :data(x), next(NULL){}
};
int main()
{
Node* a = new Node(1);
Node* b = new Node(2);
Node* c = new Node(3);
Node* d = new Node(4);
//将指针a赋值给d,a和d指向同一个地址,
//a或者d对地址中元素的操作会引起对方的变化。
cout << d->data << " " << a->data << endl;// 4//1
d = a;
d->data = 333;
cout << d->data << " " << a->data << endl;//333//333
//改变a的地址不会引起d的变化
a = c;
cout << d->data << " " << a->data << endl;//333//3
cout << c->data << endl;//3
//改变a的地址不会引起d的变化
a->next = new Node(888);
cout << c->next->data << endl;//888
a = a->next;
cout << d->data << " " << a->data << endl;//333//888
cout << c->data << endl;//3
}
相关阅读
当我们比较两个参数值是否相等的时候,经常用到equals,但是 偶尔我们会忘记判断非空,例如写出这样的代码: 这样就会引起空指针,正确的
一般情况下,对结构体类型的变量或者结构体类型的数组的赋值都是先定义一个结构体类型的变量,然后在对其属性进行赋值。例如: typedef
数组和数组之间能直接赋值吗?——不能 你难道是想 a=b??首先你要明白:数组名a,b代表指针常量,所以说赋值号左边必须是一个变量a=b
指向引用的指针 使用指针的一个简单例子就是:int v = 1; int *p = &v; 需要预先强调的是没有指向引用的指针!因为引用不是对象,没
textarea 语句是双标签 中间写入赋值 textarea语句无法跟input单标签一样在标签内向value赋值 但可以和其他双标签语句一样,在双