아래의 실행결과는 main함수에서 포인터를 함수로 넘기고 난후 포인터에 저장되어있는 주소값을 확인한 것이다. 이중포인터를 사용하지 않을 경우에는 함수호출시 단순히 포인터의 주소를 복사한후에 호출된 함수에서 복사한 것으로이루어지기에, main함수내의 포인터의 주소는 바뀌질 않는다.

자료 구조 등에서 함수를 호출할때 call by reference 방식과 같이 input으로 넣어준 포인터의 주소를 이용한후에 다시 그 포인터에 저장된 주소를 바꾼후, main함수내에서도 바뀌어있길 바란다면 이중포인터를 이용한다.

아 글로 쓰려니까 복잡네 그림으로 그리든가 해야지 원 





--------------------------------code-----------------------------------------
#include <iostream>
#include <stdio.h>
using namespace std;

void function(int* a){
/*main함수에서 function함수 호출시 함수에 input으로 넣은 포인터의 주소를 a에 저장함
input으로 넣은 포인터의 주소를 int* a에 저장하는것이므로 a를 바꾼다해서 main 함수의 포인터 p 주소가 바뀌질 않음
이문제를 해결하기위해 아래의 이중포인터를 사용한다.*/
	int c;
	int* b=&c;
	a=b;
}

void main(){
	int a=10;
	int *p=&a;

	cout<<p<<endl;
	function(p);
	cout<<p<<endl;
}





이중포인터를 쓰고 난 결과



------------------code-----------------------
#include <iostream>
#include <stdio.h>
using namespace std

void function(int** a){
	int c;
	int* b=&c;
	*a=b;
}

void main(){
	int a=10;
	int *p=&a;

	cout<<p<<endl;
	function(&p);
	cout<<p<<endl;
}


설정

트랙백

댓글

STL deque

전전컴/C++ 2013. 10. 16. 01:28



 -----------------------------code-------------------------
 
#include <iostream>
#include <stdio.h>
#include <deque>
using namespace std

void main(){
	deque<int> dq

	dq.insert(dq.begin(),5);
	dq.insert(dq.end(),15);
	dq.insert(dq.end(),20);
	dq.erase(dq.begin());
	
	cout<<dq.front()<<endl
	for(int i=0 i< dq.size(); i++){
		cout<<dq[i]<<endl
	}
}


설정

트랙백

댓글

STL priority_queue

전전컴/C++ 2013. 10. 16. 01:10


Queue이지만 priority를 고려하는 property때문에 front 같은 method가 없다.

-------------------------------------------code--------------------------------------
#include <iostream>
#include <stdio.h>
#include <string>
#include <queue>
#include <ctime>
using namespace std;

void main(){
	priority_queue<int> s;

	srand(time(0));

	for(int i=0; i<5; i++){
		s.push(rand());
	}
	while( !s.empty() ){
		cout<<s.top()<<endl;
		s.pop();
	}
}


설정

트랙백

댓글

STL queue

전전컴/C++ 2013. 10. 16. 00:59



------------------------code--------------------------------------
  
#include <iostream>
#include <stdio.h>
#include <string>
#include <queue>
using namespace std;

void main(){
	queue<int> s;
	s.push(10);
	s.push(12);
	s.push(22);

	while( !s.empty() ){
		cout<<s.front()<<endl;
		//cout<<s.size()<<endl; //들어가있는원소개소
		//cout<<s.back()<<endl;
		s.pop();
	}
}


설정

트랙백

댓글

STL stack

전전컴/C++ 2013. 10. 16. 00:32


-------------------------------코드--------------------------------------
#include <iostream>
#include <stdio.h>
#include <string>
#include <stack>
using namespace std

void main(){
	stack<char*> s;
	s.push("red");
	s.push("green");
	s.push("blue");

	while(!s.empty()){
		cout<<s.top()<<endl;
		s.pop();
	}
}

//void main(){
//	stack<int> s;
//	s.push(5);
//	s.push(1);
//	s.push(20);
//	while( !s.empty() ){
//		cout<<s.top()<<endl;
//		s.pop();
//	}
//}
//


설정

트랙백

댓글