Ex45-문자열 배열과 문자열 포인터를 통해 문자 변경

CODEDRAGON Development/C, C++

반응형

   

문자열 배열과 문자열 포인터를 통해 문자 변경

   

   

   

part1 메모리 구조

   

   

part2 메모리 구조

   

   

소스코드

   

#include <stdio.h>
int main(void) {
                char array[ ]="ABCDE";  //
문자열배열(문자열변수)

                // "ABCDE":
문자열 상수로 변경 불가, 이름은 없지만 메모리 공간에 저장되어 있음
                // p:
주소를 저장하는 포인터 변수
                char* p="ABCDE";        //
문자열 상수의 시작 주소를 p 저장

//part 1 ------------------------------------------------------------
//              p[0]='Z';                       //
에러, 문자열 ABCD 문자열 상수(변경 불가)
//              array[0]='Z';           //
변경 가능



//part 2 ------------------------------------------------------------
                p=array;                        //
변경 가능, p 포인터 변수
//              array=array+1;          //
에러, 배열 이름은 상수(변경 불가)
//                                                      // p = p+1;
가능



//part 3 ------------------------------------------------------------
                p = p +1;
                printf("%s \n", p);
                printf("%s \n", array);

                return 0;
}


   

   

출력결과

part1/part2 에러 출력됨

   

   

part3 출력 결과