예전것/프로그래밍
포인터와 함수.
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를 쓰면 될거같다...