예전것/프로그래밍

포인터와 함수.

hangover 2009. 6. 23. 09:35

출력하고자 하는것
함수 호출 : 1
함수 호출 : 2
함수 호출 : 3

#include<stdio.h>

char* getstr();

void main()
{
 puts( getstr());
 puts( getstr());
 puts( getstr()); 
}

char* getstr()
{
 static int n = 1;

 char *x = "" ;

 printf("함수 호출 : %d", n++);

 return x;
}


 getstr함수에서 정적 변수를 선언해서 호출 할때마다 n이 증가하도록 함.

헷갈렸던것

char *x = ''; 이것은 에러가 난다. ''은 빈문자 '상수' 이기때문이다. 주소를 가리켜야한다. 그러기위해선 "" 를 써서 빈문자를 나타내는 주소를 가리키게한다.

char x = ""; (char x = '';은 상수이기 때문에 return 상수; 하는 꼴이다.)
하고
return &x 로 바꾸면 어떤 문제가 생길까?

-일단 char x= ""; 이렇게 선언한다는것 자체가 문제이다. 상수형 변수에 주소를 넣겠다는 생각인가.
이때 &x는 뭐 그냥 주소값인데 아무것도 의미하지않는다.



getstr함수에서 문자자체를 넘겨주는 방법을 생각할 수있겠다(printf없이..) 스트링함수의 append를 쓰면 될거같다...