반응형


학교 다닐 때 다른 블로그에 등록했던 글 복사 ㅎㅎ - http://blog.naver.com/7dbwnckd/50012727041


널 문자 (='\0')와 널 포인터 (= NULL = (void*)0) 그리고 false 는

사실상 0x00 이라는 같은 값을 가집니다.


하지만 의미상 확연한 차이가 있기 때문에, 다르게 쓰입니다.


# 널 문자

널 문자는 보통, 문자열의 끝을 알리는데 쓰입니다.

char *str = "abcd";

-> [ 'a' | 'b' | 'c' | 'd' | '\0' ]




# 널 포인터

포인터 변수 초기화나 포인터 파라미터 전달 시에 주로 쓰입니다.


// 포인터 변수 초기화
char *pstr = NULL;

// 포인터 파라미터 전달
time_t time(time_t *); // time() 함수 프로토타입

time(NULL);



# 논리값 false

bool 형 변수에 값을 대입하거나, 함수 파라미터 전달 시에 쓰임.

void my_func(bool bExist); // 프로토타입

my_func(false);




모두 같은 값을 가지는 것들이지만...

상황에 따라 쓰이는 경우가 다르지요?


이렇게 의미상 구분이 되는 것들을 나누어 놓지 않으면,

큰 프로그램을 분석할때 아주 골치 아파 진답니다.

반응형
반응형


학교 다닐 때 다른 블로그에 등록했던 글 복사 ㅎㅎ - http://blog.naver.com/7dbwnckd/50013168713


 

standard input으로 쓰이는 scanf .. 이해를 바로 합시다..

 

간단한 예를 하나 들어보죠...

 

바로 아래의 예를 실행시켜 보면... char를 입력하지 못하고 바로 넘어갑니다.

 

void exScanf()
{

 int a;
 char ch;

 printf("enter a number : ");
 scanf("%d", &a);

 

 printf("enter a charac : ");
 scanf("%c", &ch);  

 printf("a: %d , ch: %c \n", a, ch);
}

 

왜냐하면... 첫 번째 입력후 엔터키를 입력하게 되는데요~

그 엔터기가 그 다음 scanf의 문자로 입력되어지는 결과가 나오거든요~

 

그래서 오류를 수정하면... 2가지 방법으로 수정할 수 있답니다.

둘 중 하나를 택일 하시면 됩니다. ^^;;

 

void exScanf()
{

 int a;
 char ch;

 printf("enter a number : ");
 scanf("%d", &a);

 

//  첫 번째 방법...

 fflush(stdin);  // 버퍼를 비워라.

 

 printf("enter a charac : ");

// 두 번째 방법
 scanf("%*c", &ch);  // * wild gey : 앞에 오는 \n 받지마라는 소리.

 printf("a: %d , ch: %c \n", a, ch);
}

반응형

+ Recent posts