c/c++ 對struct進行淺複製

對於一個指針進行解引用,然後複製給另一個引用,那麼效果等價於進行了淺複製。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <iostream>

using namespace std;

struct node{
	int data;
	char name[10];	
};

int main(){
	int pid=fork();
	if(pid==0){
		printf("child\n");
	}
	else{
		printf("parent\n");
		struct node * node1=(struct node*)malloc(sizeof(struct node));
	  node1->data=12;
	  strcpy(node1->name,"world");
	  printf("%d %s\n",node1->data,node1->name);
	  struct node node2=*(node1);
	  node2.data=13;
	  cout<<"node1 data is:"<<node1->data<<" name is:"<<node1->name<<endl;
	  cout<<"node2 data is:"<<node2.data<<" name is:"<<node2.name<<endl;
	}
	
	return 0;	
}


上面程序的運行結果爲:

child
parent
12 world
node1 data is:12 name is:world
node2 data is:13 name is:world

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章