본문 바로가기

C언어

C언어_ 포인터 변수와 배열의 이름, 문자열을 함수의 매개변수로 전달

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