다루두루

블로그 이미지

차케요

공부하면서 정리하는 노트같은 블로그입니다.

C언어 프로그램 문자열과 포인터

C언어 알고리즘 2015. 8. 24. 17:38


C언어 프로그램 문자열과 포인터


■ 문자열을 선언하는 일반적인 방식은 다음과 같이 배열에 char 변수를 저장하는 방법일 것이다.

 char ch[]="Hello!";

이때 배열의 길이는 자동으로 초기화되기 때문에 신경 쓰지 않아도 되고,이는 변수들을 모아놓은 배열이다. 그렇기 때문에 그 변수에 저장된 값들을 변경할 수가 있는데 간단하게 확인해본다.


▲ 먼저 ch 배열로 문자열을 저장한 후 출력하고 있으며 문자열의 여섯 번째 요소 ch[5]='!'에 접근해서 그 값을 '?'로 변경하고 있는데 프로그램 실행 결과를 보면 정상적으로 그 값이 바뀐 걸 확인할 수 있다. 이처럼 배열을 이용한 문자열은 저장된 값의 변경이 가능하다. 

 

 

 하지만 이번 글에서 알아볼 포인터는 그 안에 저장된 문자열 값을 변경하지 못한다는 결론을 먼저 내리고 정리해본다. 포인터도 역시 문자열을 가리킬 수 있다. 하지만 그 내용은 변경할 수 없는 상수 형태의 문자열을 가리키며 형식은 다음과 같다.

▲ 이 예제를 통해서 포인터도 문자열을 가리킬 수 있다는 걸 확인할 수 있다. 즉, Hello! 중에서 H의 주솟값을 aa 포인터 변수에 저장하고 있는 것이다. 그렇기 때문에 aa로 접근해서 문자열을 변경할 수 없는 것이다. aa는 단지 H의 주소만 저장하고 있는데 어떻게 문자열을 변경할 수 있겠는가? 실제로 예제를 작성해 보면....


▲ 이렇게 포인터 변수로 접근해서 여섯 번째 요소인 '!'를 '?'로 변경하고 있다. 이 프로그램을 실행하면 컴파일은 된다. 하지만 실행 중간에 다음과 같은 상황을 맞게 된다.


▲ 원래 문자열인 "Hello!"는 정상 출력된다. 하지만 aa[5]='?';를 실행하는 과정에서 변경하지 못하고 프로그램이 종료되버린다. 이렇게 포인터도 문자열을 가리킬 수 있지만 그 값은 변경하지 못하는 상수형 문자열이다.


 여기서 한 가지 더 정리해야 할 건 그 문자열의 값만 변경하지 못하는 것이지 다른 문자열을 가리킬 수는 있다. 

▲ 이렇게 완전히 다른 문자열을 가리키게 할 수 있는 것이다. 기존에는 "Hello!" 중에서 'H'의 주소를 저장하고 있었다면 변경된 후에는 "Hi~!!"의 'H' 주소를 저장하게 되는 것이다. 


 정리하자면 포인터 변수도 문자열을 가리킬 수 있는데 그 안에 있는 요소 일부만 변경하지는 못하지만 다른 문자열을 가리키게 할 수는 있는 것이다. 

저작자표시 비영리 변경금지 (새창열림)
Posted by 차케요

    최근...

  • 포스트
  • 댓글
  • 트랙백
  • 더 보기

카테고리

NEW (900)
아이폰 개발 기초 (7)
취미 (16)
아두이노 (16)
[안드로이드] 어플만들기 (77)
안드로이드 기초 다지기 (61)
슈팅게임 만들기 (4)
[JAVA]자바 공부하기 (48)
C언어 알고리즘 (61)
[Unity3D]유니티3D 강좌 (7)
컴퓨터 (325)
포토샵CS2 강좌 (6)
유용한 프로그램 (244)
리눅스 노트정리 (22)
임베디드 리눅스 (11)
New블로그 (9)
음식의 효능 (4)
일반상식 (56)
HTML 공부 (40)
포토샵 공부 (36)
엑셀 (6)
파워포인트 공부 (19)
노트정리 (38)
일상 (33)
TV영화 (85)
방명록 : 관리자 : 글쓰기
차케요's Blog is powered by daumkakao
Skin info material T Mark3 by 뭐하라
favicon

다루두루

공부하면서 정리하는 노트같은 블로그입니다.

  • 태그
  • 링크 추가
  • 방명록

관리자 메뉴

  • 관리자 모드
  • 글쓰기
  • NEW (900)
    • 아이폰 개발 기초 (7)
    • 취미 (16)
      • 아두이노 (16)
    • [안드로이드] 어플만들기 (77)
      • 안드로이드 기초 다지기 (61)
      • 슈팅게임 만들기 (4)
    • [JAVA]자바 공부하기 (48)
    • C언어 알고리즘 (61)
    • [Unity3D]유니티3D 강좌 (7)
    • 컴퓨터 (325)
      • 포토샵CS2 강좌 (6)
      • 유용한 프로그램 (244)
    • 리눅스 노트정리 (22)
      • 임베디드 리눅스 (11)
    • New블로그 (9)
    • 음식의 효능 (4)
    • 일반상식 (56)
    • HTML 공부 (40)
    • 포토샵 공부 (36)
    • 엑셀 (6)
    • 파워포인트 공부 (19)
    • 노트정리 (38)
    • 일상 (33)
    • TV영화 (85)

카테고리

PC화면 보기 티스토리 Daum

티스토리툴바