본문 바로가기

포인터 연산

포인터 와 배열 ●포인터 와 배열 “배열명은 포인터 다!” 이말은 곧 배열명은 그 배열의 첫 번째 기억공간의 시작 주소 상수 이다. 이는 “첫 번째 배열의 주소 값“ 하고는 그 계념이 틀리다. ex)char arr[5]; char *ap = arr; 으로 선언 했다고 가정 한다면 ap == &arr[0] 라고 볼수가 있다. 여기서 arr은 첫 번째 기억공간의 주소값을 문자화 시킨것이라고 볼 수 있다. 이런 사실을 통해 다음과 같은 법칙이 성립한다. arr[0] == *(arr+0) == *(ap+0) == ap[0] ex)int ary[10]={1,2,3,4,5,}; int *ip = ary; printf("%u\n",ary);//3가지 모두 같은 값이다. printf("%u\n",ip); printf("%u\n",&a.. 더보기
포인터 연산 ●포인터 와 포인터 변수의 연산 포인터 와 포인터 변수의 연산은 상당히 제한적이다. 포인터 변수에 포인터를 할당할때는 가리키는 자료형이 일치해야만 한다. ex)int in; float *fp = ∈ //이는 불가능한 연산이다. ○포인터 또는 포인터 변수에 정수값을 더할수 있다. 예를 들어서int in; int *ip = ∈ in=100번지 ip=100번지이라는 포인터가 선언 되었다고 가정한다면 ip안에 in변수의 시작 주소값이 할당 될 것이다. 이를 100이라고 보자. 이면, 와 같다 여기서 ip+1;을 수행한다면 100+1이 수행 되는 것이 아니라 100+(1*4)가 연산이 되는 것이다. 여기서 한마디로 포인터 + 정수*sizeof(*포인터) 로 연산이 수행되는 것이다. 여기서 sizeof(.. 더보기