728x90
300x250
[C언어] 문자열에 대해서
태스트 : Visual Studio 2008
소스
#include <stdio.h>
main()
{
char *imsip;
char imsi;
imsip = 'a'; /* 1번 */
imsip = "a"; /* 2번 */
imsi = 'a'; /* 3번 */
imsi = "a"; /* 4번 */
}
설명 :
1번 : 'a' 문자를 할당하려고 하는 것이다. imsip = 'a';의 의미는 'a'에 해당하는 아스키코드 정수 값을 imsip에 넣으려고 하는 것과 같습니다. imsip에는 주소 외에는 다른 값이 할당 될 수 없으므로 문법적으로 옳지 않습니다.
2번 : "a"라는 문자열이 메모리의 어딘가에 저장되고 이 저장된 주소를 imsip에 대해 할당하므로 맞는 문장입니다. "a"는 뒤에 널 문자가 추가된 문자열이며 문자가 아닙니다.
3번 : 'a'문자를 imsi에 할당합니다. 아스키 정수 값이 imsi에 할당되므로 문법적으로 하자가 없습니다.
4번 : "a"는 문자열이며 문자열은 주소 값을 리턴하므로 "a"가 저장된 곳의 주소가 imsi에 할당됩니다. 물론 메모리 접근 오류이므로 에러가 나타나게 되겠습니다.
반응형
'소프트웨어(SW) > GNU - C, C++' 카테고리의 다른 글
[C++] 입출력 - 표준 출력 (8) | 2009.07.04 |
---|---|
[C언어] 문자열과 포인터 배열 (156) | 2009.06.07 |
[C언어] 포인터 배열 정리 (134) | 2009.06.07 |
[C언어] 꼭 알아야 할 배열 포인터 (142) | 2009.06.07 |
[C언어] 포인터 변수 관계 (124) | 2009.06.07 |