function에서 local variable의 pointer를 넘기는 것은 안되지만
static variable의 pointer를 넘기는 것은 가능하다.
local variable은 stack에 저장되기 때문에 function이 return되면 aceess하면 안되지만
static variable은 heap에 저장되기 때문에 function이 return되어도 acess해도 된다.
예)
$ cat ./const_test2.cpp
#include <iostream>
using namespace std;
int* func()
{
static int i = 10;
i++;
cout << "i in func : " << i << endl;
return &i;
}
int main()
{
int *j;
j = func();
cout << "*j : " << *j << endl;
++(*j);
cout << "*j : " << *j << endl;
j = func();
cout << "*j : " << *j << endl;
return 0;
}
$./a.out
i in func : 11
*j : 11
*j : 12
i in func : 13
*j : 13
댓글 없음:
댓글 쓰기