728x90

com[20]이라는 배열에 'google'이라는 문자열을 대입하고 싶으면

선언과 동시에 

char com[20] = { "google" }; ==> 이것처럼

대입하는 방법이 있다.

 

하지만 코드를 짜다보면 선언과 동시에 문자열을 초기화 해주면서 사용 할 일이 거의 없으므로

선언과 분리되어 문자열을 대입 할 수 있어야 한다.

하지만 com[20] = { "google" }; 과 같이 대입하면 오류가 생긴다.

 

그 이유는

char com[20] 이라고 선언하면 char형(1바이트)을 20개 선언한 것이다.

(com[0], com[1], com[2], ..... com[18], com[19]) : 19까지만 메모리 할당 됨, 20은 할당되지 않음

근데 com[20]이라는 1바이트 변수에 'google'이라는 7바이트(\0 포함)를 대입하면 당연히 오류가 생길 수 밖에 없다.

(애초에 com[20]은 메모리 할당도 되지 않음)

 

 

따라서 선언과 동시에 초기화를 하지 않고 char형 배열에 문자열을 대입하려면

strcpy(주소, 내용); 를 사용하면 대입 할 수 있게 된다.

 

728x90

'C 메모' 카테고리의 다른 글

int * const와 const int *의 차이점  (0) 2020.03.15
typedef로 함수 포인터 별칭 정의하기  (0) 2020.03.15
void 포인터  (0) 2020.03.07
함수 포인터  (0) 2020.03.07
배열 (2)  (0) 2020.03.06

+ Recent posts