본문 바로가기

Pointer

포인터 와 배열 ●포인터 와 배열 “배열명은 포인터 다!” 이말은 곧 배열명은 그 배열의 첫 번째 기억공간의 시작 주소 상수 이다. 이는 “첫 번째 배열의 주소 값“ 하고는 그 계념이 틀리다. 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.. 더보기
포인터를 매개변수로 함수의 인수 전달 방법은 간단하게 두가지가 있는데 call by value 와 call by reference이다. call by value 는 간단하게 말해서 전달 인수를 복사해서 넘겨주는 것이다. 이로 인해 메인함수의 원본 변수의 값이 보호가 될수 있지만, 전달되는 값이 많을 때는 함수의 사용이 비효율 적이다는 것이다. 아무리 많은 매개 변수를 넘겨줘도 돌아오는건 한 개 이상이 될 수 없다. 이런 문제점을 해결하는 것이 call by reference이다. 한마디로 포인터를 이용하여 주소를 참조하여 함수간의 매개 변수를 전달 하는 것이다. 전달하는 형식은 다음과 같다. main 함수에서 값을 넘겨줄 때 swap(&a,&b);//주소 연산자로 주소값 자체를 넘겨준다. swap 함수에서 값을 받을 때 s.. 더보기