포인터를 이용한 문자열은 "리터럴 문자열"로 내용 수정이 불가능
하지만 주소값 변경을 이용한 값 변경은 가능하다
배열을 이용한 문자열은 내용 수정이 가능
배열의 주소값 변경이 불가능하다 (arr++ 가 불가능)
아래 예시 참고
#include <stdio.h>
void func(char *str, char *arr)
{
printf("%c\n", *str); // str[0]문자 'p' 출력
printf("%s\n", str); // str 문자열 "pointer" 출력
printf("%s\n", arr); // arr 문자열 "array" 출력
//str[0] = 'P'; 포인터 문자열 = 리터럴 문자열 = 문자 값 수정 X
arr[0] = 'A'; // 배열 arr[0] = 'A' 로 값 수정 ("Array")
printf("%s\n", arr); // 배열 arr 문자열 "Array" 출력
printf("%c\n", *arr); // 배열 arr[0] 문자 'A' 출력
printf("%c\n", *(arr + 1)); // 배열 arr[1] 문자 'r' 출력
//printf("%c\n", ++arr); 불가능 (배열 주소값 변경 불가능)
}
int main()
{
char *str = "pointer"; // 포인터 이용한 문자열
char arr[] = "array"; // 배열 이용한 문자열
func(str, arr);
return 0;
}
'etc > algorithm' 카테고리의 다른 글
[c 언어] 포인터와 call by address : 실제 값에 영향 있는 경우와 없는 경우! (0) | 2021.03.27 |
---|---|
[C#] 입출력과 데이터 (0) | 2020.10.07 |
[C++] 다양한 별 찍기 문제 연습 (0) | 2020.07.26 |
[C++] c++ 시작하기 : cout, cin, namespace, 오버로딩 (0) | 2020.05.18 |
[Python] 5장 재귀와 반복 : 정렬 (Sorting) (0) | 2020.05.08 |