char * 썸네일형 리스트형 printf function(함수) - %s, %c차이 char *a = "1234"; printf ("%s, %c", a, *(a)); %s는 char *형을 요구 %c는 char형을 요구 %s는 주소값을 받고 그 주소값에 안에 저장되어 있는 문자를 시작으로 \0이 나올 때까지의 문자열을 출력 %c는 실제 문자을 받아서 그 문자열을 출력 더보기 char []와 char * 차이점 char str[] = "abc"; char *str = "abc"; printf("%s", str) 하면 똑같이 abc가 찍혀나오니깐 별 차이가 없다고 생각할 수도 있겠지만 이 두 선언은 엄연히 다르다. 위 코드를 gcc -S 옵션으로 어셈블리로 생성해보면 두 코드 모두 "abc"를 .rodata 섹션에 할당한다, gcc2_compiled.: .section .rodata .LC0: .byte 0x61,0x62,0x63,0x0 여기서 .rodata는 읽기 전용(read only) 데이터를 말한다. 그렇다면 다음과 같은 코드를 실행하면 어떻게 될까? int main() { char *str = "abc"; str[0] = 'b'; } str은 .rodata 영역에 있는 "abc"에 대한 포인터이므로 이 .. 더보기 이전 1 다음