포인터
-
Understanding and Using C Pointers(기억이 잘 안나는 부분)@ 16. 1 ~ 17. 1/C++ 2015. 6. 28. 01:49
1. 포인터 선언을 읽는 방법 포인터 선언을 뒤에서부터 읽음으로써 선언을 점차적으로 이해할 수 있음. const int *pci 이것은?? (뭐 지금까지 공부한 내용으로는 const *왼쪽에 있으니 int* 값이 상수다..이미 결론이 나오지만..) (*pci=값 수정 안됨) const int *pci; // 변수 pci const int *pci // 포인터 변수 pci const int *pci //정수를 가리키는 포인터 변수 pci const int *pci //상수 정수를 가리키는 포인터 변수 pci 2. 정수와 포인터를 저장하는데 같은 크기의 바이트를 사용하지만..이 둘은 같은 데이터 타입이 아니다. 그러나 정수를 정수 포인터로 캐스팅하는 것은 가능하다.. int *pt; int num=1; pt..
-
참조와 포인터(1)@ 16. 1 ~ 17. 1/C++ 2013. 2. 13. 22:09
참조와 포인터 포인터는 &를 붙여서 주소로 만들어야하지만 참조는 그럴 필요가 없다. int a = 5; int &ref=a; int *ref=&a; 사용시 포인터는 *를 붙이지만 참조는 없어도된다. ref=10; *ref=10; 참조만의 특징 1. 초기화가 필요하다 포인터의 경우 무엇을 가리키는지 알 수 없는 것도 만들수 있다. int *ptr; 하지만 참조의 경우 int &ref; 는 안된다. 2. 가리키는 대상을 변경할 수 없다. 포인터는 도중에 가리키는 대상을 변경할 수 있다. int a; int *ptr=&a; int b; ptr=&b; 이런식으로 변경이 가능하지만 참조는.. int &ref=a; ref=b; 이러면 에러다.. 3. 첨자를 붙일 수 없으며 숫자도 더할 수 없다. 포인터의 경우 in..
-
포인터 정리(4)@ 16. 1 ~ 17. 1/C++ 2013. 1. 31. 23:12
int *np int형 포인터 변수로 4byte이며 int형 주소를 저장한다. int **npp; 2차원 포인터 변수로 4byte이고 1차원 포인터 변수의 주소를 저장한다. int arr[3]; int형 배열로 int형 메모리 3개를 갖는 12byte 메모리이다. int arr[2][3]; int형 2차원 배열로 int형 6개를 갖는 24byte 메모리이다. int *arr[3]; int형 주소를 3개까지 저장하는 배열로 각 배열요소(arr[0]...)가 int형 주소를 저장한다. 총 12byte 이다. int(*arr)[3]; 포인터 변수로 4byte이며 2차원 배열과 같은 열의 개수가 3개인 int형 배열의 시작주소를 저장하기 위해 사용하여 4byte이다. 예) int arr[2][3]; int(*a..
-
포인터와 문자열(2)@ 16. 1 ~ 17. 1/C++ 2013. 1. 31. 20:24
int arr[3][3]={{1,2,3},{4,5,6},{7,8,9}}; 2차원 배열을 int (*app)[3] = arr; 2차원배열을 가르키는 포인터 그리고.. int arr[3] = {1,2,3}; 1차원 배열을 일경우... int (*app)[3]=(int(*)[3])arr; 2차원배열을 가르키는 포인터로 변환해서.. 이런식으로하면...물론 일부에는 쓰레기값이 들어가긴하지만.. 접근시에도 app[0][1] 이런식이 가능.. 반대로 2차원 배열을 1차원 배열로..하면.. int arr[3][3]={{1,2,3},{4,5,6},{7,8,9}}; int *app = (int*)arr; 이런식으로 형변환을 해주면..app[8]로 접근이 가능하다. int arr[3][3]={{1,2,3},{4,5,6},{..