728x90
상수 형태의 문자열을 가리키는 포인터
포인터의 주소값을 찾아가서 수정할 수 있다
#include <stdio.h>
int main() {
char str[6] = { 'H','e','l','l','o','\0' }; // /0 : null 값
//변수 형태의 문자열: 자동으로 문자 개수만큼 배열 크기가 설정됨
char str1[] = "welcome";
//상수 형태의 문자열: 문자가 저장되어 있는 시작위치의 주소를 str2 포인터 변수에 돌려줌
char* str2 = "Hello"; //접근이 아니라 포인터 변수인걸 알려주기 위함 / 변수 앞에 있는건 접근하라는뜻
printf("%s %s %s \n", str, str1, str2);
//str1[] = "Good"; //가리키는 대상 변경 불가능
str2 = "World"; //가리키는 대상 변경 가능
printf("%s %s %s \n", str, str1, str2);
str1[0] = 'X'; //문자열 변경 가능
//str2[0] = 'X'; //문자열 변경 안됨
printf("%s %s %s \n", str, str1, str2);
}
str 배열과 변수의 차이를 한번에 보여주는 코드
1. str배열엔 아무거나 넣을수 있는 것처럼 보이지만 변경이 불가능하다 (그래서 주석친 str1[]부분에서 에러남)
2. 그냥 str변수는 언제나 변경이 가능하다
보다시피 str1[0]의 값은 변경이 가능하다. 첫번째 배열의 값을 X로 변경해 Xelcome이 된 것을 볼 수 있다
자료형 뒤에 *를 붙이면 포인터 변수란걸 알려주는거임
#include <stdio.h>
void showArray(int arr[], int len) {
int i;
for (i = 0; i < len; i++) {
printf("%d ", arr[i]);
}
printf(" \n");
}
int main(){
int arr1[3] = { 1,2,3 };
int arr2[5] = { 4,5,6,7,8 };
showArray(arr1, sizeof(arr1) / sizeof(int));
showArray(arr2, sizeof(arr2) / sizeof(int));
}
728x90
'언어는 과-학인가요? > c언어' 카테고리의 다른 글
(c언어) 구조체(structure) (0) | 2020.09.19 |
---|---|
(c언어) 함수 호출 - 변수 값 위치 바꾸기 swap (0) | 2020.09.12 |
(c언어) 배열과 포인터 (0) | 2020.09.12 |
(c언어) 포인터(pointer)뜻 (0) | 2020.09.12 |
(c언어) 배열을 만들어보자 (array) (0) | 2020.09.05 |