Programming Language/C Programming
[C프로그래밍 Chapter10]
JackYoon
2020. 1. 31. 12:29
반응형
[포인터와 배열]
배열 이름
배열 이름은 포인터. 값을 바꿀 수 없는 상수 형태의 포인터이다.
따라서 배열의 이름은 배열의 시작 주소 값을 의미하며, 값 저장이 불가능한 상수다.
배열은 시작 주소만 알면 자료형을 통해 다음위치를 예측할 수 있기 때문이다.
배열 이름도 포인터이기 때문에 *연산이 가능하다.
포인터를 배열의 이름처럼 사용할 수 있다.
int *ptr = &arr[0];
#ptr[0] = arr[0]과 같은 의미이다.
[포인터 연산]
포인터는 *연산 이외에도 증가 감소 연산자도 사용할 수 있다.
int형 포인터 1증가 - > 주소값 4 증가
double형 포인터 1증가 - > 주소값 8증가
*(++ptr) : ptr에 저장된 값 자체를 변경
*(ptr+ 1) : ptr에 저장된 값은 변경되지 않음
arr[i] = *(arr + i) 와 같다
[상수형태 문자열 가리키는 포인터]
char str1[ ] = "first example";
#변수 형태의 문자열
str1은 문자열이 저장된 위칠를 가리키는 상태여야 한다.
char * str2 = "second example";
#상수 형태의 문자열
포인터 변수 str2는 다른 위치를 가리킬 수 있다.
[포인터로 이루어진 배열]
포인터 배열 : 포인터 변수로 이루어진 배열
int * arr[10] = { };
문자열 저장하는 포인터 배열
char * strArr[i] = { };
#출력시 그대로 출력하면된다. 문자열은 형태와 상관없이 메모리 공간에 저장된 후, 주소 값이 반환된다.
반응형