출력하고자 하는것
함수 호출 : 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를 쓰면 될거같다...
'예전것 > 프로그래밍' 카테고리의 다른 글
매개 변수 2을(를) 'const char [29]'에서 'LPCWSTR'(으)로 변환할 수 없습니다. (0) | 2009.09.11 |
---|---|
배열과 포인터에 관한문제 (0) | 2009.06.25 |
포인터 세번째, 여러가지 포인터 비교 (0) | 2009.06.25 |
C 포인터 와 scanf buf에 대해 (0) | 2009.06.23 |
C포인터와 little, big endian (0) | 2009.06.19 |