함수에서 포인터를 넘겨주는데..
글쓴이: lacovnk / 작성시간: 월, 2004/05/03 - 10:45오후
STATUS BMTree::_insert(node *node_target, const dtype data_x, dtype &data_y, node *&node_q);
이런 녀석이 있군요 -_-;
node는 typedef된 struct고요.
대체 *&node_q...라는 변수는 어떤걸 의미하나요?
사용은 다음과 같이 되는데..
node *node_new, *node_final; dtype data_x_new, data_k_final; STATUS result; blablabla... /* * recursive call */ result = _insert(node_target->nodes[i], data_x, data_x_new, node_new);
node_new가 node*형이니, 결국은 포인터를 넘겨주는게 아닌가 싶은데..
받는 함수에서 왜 *&라고 하는지 모르겠네요. 저걸 *로 고치면 컴파일 에러는 안나지만, segmentation fault가 나고...
그리고 저걸 C로 바꾸려는데, c에서는 계속 parse에러가 나더군요.
무슨 의미인지요? 으음.
Forums:


혹시 포인터 스왑 함수 만들어 보신적 있으세요 ^^[code:1]
혹시 포인터 스왑 함수 만들어 보신적 있으세요 ^^
#include<iostream> using namespace std; void p_swap(int * a, int * b); int main() { int aa = 30, bb = 50; int * a = & aa, * b = & bb; cout<<"a:"<< *a<<"\tb:"<<*b<<endl; p_swap(a , b); cout<<"a:"<< *a<<"\tb:"<<*b<<endl; return 0; } void p_swap( int * a, int * b) { int * temp = a; a = b; b = temp } [b] 위의 코드가 잘 돌아갈까요? @.@ p_swap내부에서 포인터를 자체적으로 다시 복사하기 때문에 저기서 바뀌는건 내부 a,b 포인터만 바뀝니다. 보통 이런걸 방지 하기 위해서 **를 쓰는데 저는 저것 보다는 &*를 선호합니다. 이것도 역시 마찬 가지겠죠? 저 함수가 무엇인지는 모르겠지만 내부적으로는 저 포인터를 치환하는 연산을 하는 것 같습니다.[/b]C++, 그리고 C++....
죽어도 C++
c++에서는.. 레퍼런스라는게 있습니다..&가 바로 레퍼런
c++에서는.. 레퍼런스라는게 있습니다..
&가 바로 레퍼런스를 나타내는 것이구요..
c에는 존재하지 않습니다..
#include <iostream> using namespace std; int main( int argc, char** argv ){ int a; int *a_ptr; int &a_ref = a; a_ptr = &a; a = 3; cout << a << "-" << *a_ptr << "-" << a_ref << endl; return 0; }이런 코드를 돌려보심 대강 포인터랑 비슷하면서 사용법이
좀 다르단 걸 알 수 있을겁니다 ;)
결과는 3-3-3 이라고 나옵니다 :)
하튼 ** 이렇게 더블리포인터로 바꿔주시고.. 그걸 사용하는 부분들의 앞에
*을 붙여줘야겠죠 -_-;;
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...
http://mytears.org ~(~_~)~
나 한줄기 바람처럼..
댓글 달기