매개변수가 전달이 안됩니다.
글쓴이: dummy999 / 작성시간: 금, 2003/05/16 - 1:21오후
아래는 흥릉출판사의 자료구조책에 연결리스트를 이용한 계수 연산방법인데
초기화랑 메인은 없습니다.
지역변수형태로 p와 q를 메인에서 받고싶은데 안받아집니다.
메인에다 p와 q에대한 동적할당을 안하고 사용자함수에서 연결되었음하는데 연결이 안될까요?
매게변수 선언이 좀틀릴껍니다.
또 일일히 w,x,y 선언안하고 하나만 선언하고 두개의 문자열만으로도 이렇게 바로 바꿀수있는
방법도 부탁드립니다.
참고로 전역변수로 선언하면 되는데.. 지역변수로 해보고싶어서영
typedef struct _PTR ptr; struct _PTR { float coef; int exp; ptr *link; }; void init(ptr *p, ptr *q) { ptr *w, *x, *y; p = (ptr ) malloc(sizeof(ptr)); q = (ptr ) malloc(sizeof(ptr)); p->coef = -3; p->exp = 5; w=(ptr *) malloc(sizeof(ptr)); p->link = w; w->coef=2; w->exp =2; x =(ptr *) malloc(sizeof(ptr)); w->link = x; x->coef=9; x->exp =1; y =(ptr *) malloc(sizeof(ptr)); x->link = y; y->coef=-1; y->exp =0; y->link = NULL; q->coef = -2; q->exp = 5; w=(ptr *) malloc(sizeof(ptr)); q->link = w; w->coef=3; w->exp =3; x =(ptr *) malloc(sizeof(ptr)); w->link = x; x->coef=-4; x->exp =2; y =(ptr *) malloc(sizeof(ptr)); x->link = y; y->coef=6; y->exp =0; y->link = NULL; } main() { ptr *p, *q; init(p,q); }
무식하게 써올린 코드에 부끄럽군영. :oops:
Forums:
Re: 매개변수가 전달이 안됩니다.
이런 경우 더블 포인터(이름 맞나?)를 사용하셔야 합니다.
뭐.. 대충 이런식입니다.
이중 포인터로 하는게 맞습니다...맞고요...^^;;그냥 포인터로
이중 포인터로 하는게 맞습니다...맞고요...^^;;
그냥 포인터로 파라미터를 넘기면은...
이놈이 call by reference 라고는 하지만...
사실은 call by value 인지라...
넘어올때 받은 주소가 함수가 return 하게 되면 그대로 유지가 되는거죠
그래서 함수안에서는 malloc 으로 할당된 주소가 유지되지만
main에서는 원래대로 되는겁니다...
그래서 이걸 해결할려면 이중 포인터를 써야겠죠...
망설이지 말고 해보는거야~
댓글 달기