반응형
embedded C 를 하다보면 자연스럽게 하드코딩으로
시스템의 정보를 입력하는 문자열을 만들게 된다.
두가지 방법으로 할 수 있고, 때에 맞추어 적절히 사용하면 된다.
char string1[] = {'A', 'B', 'C', 'D', '\0'};
char* string2 = "EFGH";
첫번째 방법은 배열로 만들것이고 (마지막에 '\0' 가 꼭 들어가야 한다. 문자열의 마지막이라는 의미)
두번째 방법은 사용하기 쉬운 문법이지만, const 상수 처리가 되어 이후에 수정이 불가능 하다.
printf("%s\n", string1); // ABCD
printf("%s\n", string2); // EFGH
printf("%c\n", string1[1]); //B
printf("%c\n", string2[1]); //F
수정이 안될뿐 char 로의 접근은 둘다 동일하다.
string1[1] = 'Z';
printf("%s\n", string1);
string2[1] = 'Z'; //error
print("%s\n", string2);
string2 는 const 상수 취급을 받기 때문에
배열로서 각 자리의 글자를 바꿀 수 없다. 에러가 난다.
[Full Code]
#include <stdio.h>
void main(){
printf("start of program\n");
char string1[] = {'A', 'B', 'C', 'D', '\0'};
char* string2 = "EFGH";
printf("%s\n", string1); // ABCD
printf("%s\n", string2); // EFGH
printf("%c\n", string1[1]); //B
printf("%c\n", string2[1]); //F
string1[1] = 'Z';
printf("%s\n", string1);
// string2[1] = 'Z'; //error
// print("%s\n", string2);
printf("end of program\n");
}
반응형
'C언어' 카테고리의 다른 글
[C언어] 2차원 배열 파라미터(매개변수)로 넘기기 (0) | 2023.02.14 |
---|---|
[C언어] 구조체 초기화하는 방법 (0) | 2023.02.07 |
[C언어] 함수 포인터 배열, 실제 코드로 알아보자 (0) | 2023.01.31 |
[C언어] 함수포인터, function pointer 사용법 (0) | 2023.01.27 |
[C언어] Switch 문의 사용법과 주의사항 (0) | 2023.01.13 |
댓글