int i = aa()->str; 에 대해서
글쓴이: 익명 사용자 / 작성시간: 금, 2002/09/27 - 3:39오후
분석하는 소스중에
int i;
i = aa()->str;
등의 식이 많습니다. 물론 aa()-> 뒤에는 str, kk, dd.. 등 여러가지가 있고 반환형도
각기 다릅니다.
제가 함수포인터에 대해서 잘 몰라서 이해가 잘 안됩니다(저것이 함수형 포인터인지도
모르겠군요)
질문의 요지는
1. 위와 같은 방식은 어떠한 잇점이 있기 때문에 사용하는지와
2. 위와 같은 방식을 사용하는 간단한 예시좀 올려 주십사 하는 것입니다.
도움 부탁 드리겠습니다.
Forums:
Re: int i = aa()->str; 에 대해서
이거슨 함수가 스트럭쳐를 리턴하고
그스뜨럭쩌 의 한맴버를 변수에다가 직접대입하고 싶은거겠지요..
Re^2: int i = aa()->str; 에 대해서
그렇다면
typedef struct aa{
int i;
char c;
}AA;
로 선언한담에
struct aa* bb(){
...
...
return AA;
}
이런식으로 되는건가요..
사용할 때는 bb()->c;의 식으로요..
이게 맞나요? 헷갈리누만.. ㅡㅡ;
Re^3: int i = aa()->str; 에 대해서
... wrote..
그렇다면
typedef struct aa{
int i;
char c;
}AA;
로 선언한담에
struct aa* bb(){
...
...
return AA;
}
이런식으로 되는건가요..
사용할 때는 bb()->c;의 식으로요..
흠... return 다음에는 타입이 올 수 없으니까 return AA는 안되겠져?
return AA가 안되는 것은 return int 나 return char 가 안되는 것가 같
은 이유이구여..
아마 세가지 중 하나 아닐까여?
1. static 영역을 가리키는 포인터
2. 글로벌 변수를 가리키는 포인터
3. 파라메터로 전달받은 포인터
흠.. 보통 함수가 실패하면 NULL을 리턴하기 때문에 함수가 실패하지 않
는다는 보장이 있을 때가 아니면 좀 위험한 것 같긴 한데여..
struct aa *
bb()
{
static struct aa aa_var;
..
..
return &aa_var;
}
또는
[static] struct aa aa_var;
struct aa *
bb()
{
..
..
return &aa_var;
}
예제에서 파라메터를 전달받지 않느니 파라메터 방식은 아닌 듯 싶네여..
예제: int i = aa()->str. 참고하세요.
#include
struct test
{
int str;
};
static struct test * a(void );
static struct test * a (void)
{
static struct test s_test;
s_test.str = 1000;
return &s_test;
}
void main(void)
{
printf("return a()->str is %d\n", a()->str);
}
댓글 달기