본문 바로가기

포인터

포인터 와 배열 ●포인터 와 배열 “배열명은 포인터 다!” 이말은 곧 배열명은 그 배열의 첫 번째 기억공간의 시작 주소 상수 이다. 이는 “첫 번째 배열의 주소 값“ 하고는 그 계념이 틀리다. 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.. 더보기
포인터 ●포인터 ⦁포인터란 특정 기억공간 의 시작 주소값이다. 특정 기억공간 : 특정 자료형의 변수 ex) int a⟵a는 특정 자료형의 변수이다. 시작 주소값 : 자료형의 크기가 1바이트 이상일수 있기 때문이다. ⦁포인터는 자료형에 대한 정보를 담고 있다.(특정 자료형을 가리킨다) ⦁포인터는 일정크기를 갖는 정수값이다.⦁포인터는 가리키는 기억공간이 다를지라도 포인터 자체의 크기는 항상 일정하다. ex)char ch; printf("size of pointer : %d\n",sizeof(&ch)); printf("address : %p\n",&ch); 위의 예문은 포인터를 구해서 크기와 값을 출력하는 것이다. 첫 번째 &ch 는 1이 나올것이고 %p(주소값을 출력하는 변환지정자이다)값은 16진수로 ch의 주소가.. 더보기
동적 바인딩(Dynaminc Binding)과 가상함수 아.................................. 우선 글을 읽기 전에...이글을 올리기 5분전(담배 피고왔음..)에 중반까지 정리하다가 글을 날렸다가 다시썼다는 걸 알아두길 바란다. ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ 자..다시 하자.ㅠㅠㅠ;;; 그리고 이 글을 읽기 전에 이전 study인 Derived class point to Base class point Variable 글을 읽고 오길 바란다. 않그러면 왜 동적바인딩이 필요한지를 이해하기가 좀 거시기 하다. 이전 study와 연결을 위해서 이전 study를 한번더 복습하면, 상속된 class 끼리의 포인터 는 서로 참조가 가능하다. 하지만 포인터의 자료형이 실.. 더보기