포인터 질문입니다.
글쓴이: sj316 / 작성시간: 일, 2003/02/16 - 1:13오후
int main(void) { char *testvar=0; cout << "testfunc() 호출 시작\n" << endl; testfunc(testvar); cout << "testfunc() 호출 끝\n" << endl; cout << "변수내용 출력 시작" << endl; printf("testvar 변수주소 : %p\n", testvar); printf("testvar 변수내용 : %s\n", testvar); cout << "변수내용 출력 끝\n" << endl; cout << "메모리 해제 시작" << endl; delete[] testvar; cout << "메모리 해제 끝" << endl; getchar(); return 0; } void testfunc(char *var) { char *tmpvar=0; char *pvar=0; pvar=(char *)var; cout << "testfunc() 시작" << endl; tmpvar=new char[sizeof(char) * 30]; if(!tmpvar) { cout << "메모리 할당 실패" << endl; return; } memset(tmpvar, 0, 30); strcpy(tmpvar, "<<< 테스트 test >>>"); var=(char *)tmpvar; printf("var 변수주소 : %p\n", var); printf("tmpvar 변수주소 : %p\n", tmpvar); printf("pvar 변수주소 : %p\n\n", pvar); printf("var 내용 : %s\n", var); printf("tmpvar 내용 : %s\n\n", tmpvar); cout << "testfunc() 끝" << endl; }
testfunc()에서 main으로 값을 보내려고 하는데 잘 안 되네요
어떻게 하면 좋을까요?
Forums:
[re]
Re: 포인터 질문입니다.
포인터가 가리키는 주소값 자체를 바꾸려면 포인터의 포인터를 넘겨주어야 합니다(참조 연산자를 써서). 포인터 자체는 그냥 주소값을 갖는 변수에 불과한지라 testfunc(ptr)한다고 ptr 자체의 값이 바뀌는 건 아니거든요.
...
main()의 testvar의 주소를 변경하려고 하는데 그게 잘 안 되네요
[re]
Re: 포인터 질문입니다.
---
http://coolengineer.com
[code:1]#include <iostream.h>#
함수를 이용해서 포인터의 값을 변경시키려면 이중 포인터를 사용해야 할것 같네요..
만약 그냥 set(tmp); 해버리면 '0'이란 값이 넘어가겠죠??
근데 '&tmp' 하면 포인터 변수 tmp의 주소가 넘어가게 되어 set() 함수에서는 이중포인터 인수(char **xx)를 사용해서 넘어온 포인터 변수의 주소(&tmp)를 받아서 연산을 하면 main() 함수 안에 있는 포인터 변수의 값을 변경시킬 수 있겠죠.^^
===================================================
중요한건 얼마나 아느냐가 아니라 그것에 대한 열정이다.
감사합니다.
감사합니다.
댓글 달기