C언어에서는 문자열을 처리할 떄 배열 또는 포인터를 사용합니다.
char* a = 'abc'
char a[] = 'abc'
포인터 변수와 배열의 이름
이 둘은 거의 같다고 보아도 무방합니다.
하지만 다른점은 주소 값의 변경이 배열이 불가능하다는 점에 있습니다. 그렇기 때문에 배열은 포인터 상수라고도 불립니다.
그러면 const를 포인터 변수 앞에 붙여주게 되면 둘의 뜻하는 바가 같아집니다.
char* a는 문자열의 첫 번째 주소를 나타냅니다.
char a[] 배열로 설명을 하자면 문자열의 상수가 저장된 첫 번째 번지수를 나타냅니다.
만약 함수의 매개변수를 "abc" 로 넘기고 싶다면 어떻게 하면 될까요?
#include <stdio.h>
#include <stdlib.h>
void print1(const char *str){
printf("%s\n",str);
}
void print2(const char str[]){
printf("%s\n",str);
}
int main()
{
print1("abc");
print2("abc");
}
아직까지 왜인줄은 모르겠지만 Const를 붙여줘야 오류가 생기지 않습니다.
'C언어' 카테고리의 다른 글
C언어_Static (0) | 2022.03.21 |
---|---|
C언어_포인터와 주소값 (0) | 2022.03.21 |
C언어_fprintf, put을 쓰는 이유 (0) | 2022.03.20 |