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 |