포인터 3

C++ 포인터와 레퍼런스의 차이

포인터와 레퍼런스포인터와 레퍼런스 둘 다 원본 대상을 참조하여 이용한다는 점에서는 같습니다.- 사용하는 용도에 따라 차이점이 있기 때문에 이 둘이 존재합니다.  포인터와 레퍼런스의 차이점  포인터레퍼런스 선언 방법 int *pData; int &rData;  NULL 값 NULL 허용 int *pData = NULL;   // 실행가능 - 참조 대상을 아무때나 참조 가능 NULL 불가 int &rData = NULL;  // 컴파일 에러 int &rData = num;  - 이런식으로 선언과 동시에 초기화를 해주어야 한다. 초기화 시 string name("Hyeven"); string *pData = &name; - name의 주소값을 대입합니다. string name("Hyeven"); string ..

C 배열과 포인터

배열과 포인터 배열과 포인터는 유사한점이 있습니다. - 차이점이 있다는 이야기겠죠? 그럼 보다 자세하게 알아보겠습니다. char a[4]; 위의 선언문은 a라는 이름으로 4개의 char형(정수형 1byte) 데이터를 저장할 수 있는 기억공간을 만들어라 라는 것입니다. - 각각의 공간에 a[0], a[1], a[2], a[3]의 기억공간이 만들어집니다. (다 아시죠?)더 정확하게 말씀드리자면  1. a라는 이름의 주소번지를 담을 수 있는 공간이 만들어짐2. 메모리 내 빈 공간을 찾아 char 형의 데이터를 저장할 수 있는 연속된 4개의 공간 확보3. 연속된 4개의 기억장소의 첫번째 주소번지를 이전에 만들어 놓았던 a라는 기억장소에 저장 위 내용 중 1번은 완전히 포인터 선언을 이야기하고 있죠?유사합니다, ..

C 포인터

포인터 이해하기도 어렵고 악명높은 포인터에 대해 이야기해보도록 하겠습니다. 사전적 의미로는Point : 가리키다, 지적하다라는 의미를 갖고있습니다. 선언법은 아래와 같습니다. int *p;char *c;float *k; 와 같이 만듭니다. 그럼 일반적인 기억공간의 선언과 비교를 해보자면! 위 그림과 같이 int *p라고 선언할 때에는 p라는 이름의 주소번지를 담을 수 있는 기억장소가 만들어집니다.따라서, 이렇게 선언이 된 경우에는 p = 30; 과 같은 구문은 동작하지 않습니다. - p라는 공간은 주소번지만 담을 수 있는 공간이거든요!! - 30과 같은 정수형 변수는 넣을 수 없습니다. 주소가 아니기 때문이죠 정작 정수형 변수를 넣을 수 있는 공간은 *p라는 기억장소입니다. - *p = 30 은 된다 요..