Inventory
-
포인터 정리(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..
-
void 형 포인터 및 함수 포인터(3)@ 16. 1 ~ 17. 1/C++ 2013. 1. 31. 21:37
void형 포인터란 모든형(char int double 등)의 주소를 저장할 수 있는 포인터이다. char형과 int형 주소 모두를 저장해야하는 경우라면..void포인터를 사용하여 저장해야한다. int num=1; char a='a'; void *vp; vp=# vp=&a; 이렇게 가능은 한데..즉 주소를 저장할 수는 있지만.. *vp 처럼 주소가 가지고 있는 값에는 접근을 못한다. 어떤 형태로 접근해야할지 모르니까...근데 형변환을 하면 가능해진다. 즉, *(int*)vp; *(char*)vp 이런식으로.. 함수포인터란.. 함수의 시작주소를 저장할 수 있는 포인터 변수이다. 모든 함수의 이름은 그 함수가 시작주소이다.. 함수의 원형을 알면..함수 포인터를 만들수 있다. void main(void..
-
포인터와 문자열(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},{..
-
배열(1)@ 16. 1 ~ 17. 1/C++ 2013. 1. 29. 23:24
배열의 이름은 연속적인 배열 메모리의 시작주소를 나타낸다. 즉.. char arr[5] = {0,}; 여기서 arr과 &arr[0]은 같다 이거지.. 즉..arr가 1차원 char주소로 사용된다는 것인데.. 그러므로 *arr은 arr[0]을 나타낸다.. *arr == arr[0] *(arr+1) == arr[1] 다차원 배열 arr1[6] arr2[2][2] 시작주소는 첫번째 배열요소는 arr1[0] arr2[0][0] 차이가 있긴있다. arr2 2차원 배열의 대표주소, arr2[0] 0행의 대표주소 arr2[1]은 1행의 대표주소를 의미.. arr2 == *arr2 == arr2[0] **arr2 == arr[0][0] arr2+1 == *(arr2+1) == arr2[1] **(arr2+1) == a..
-
포인터(1)@ 16. 1 ~ 17. 1/C++ 2013. 1. 29. 22:08
1 메모리의 주소 1개는 1byte의 메모리 공간을 갖는다 2 변수는 자료를 저장할 수 있는 메모리 공간의 이름 3 자료형의 크기에 따라 변수가 사용할 메모리 공간의 크기 결정..char int 등.. 4 변수의 시작 주소는 &연산자를 변수 앞에 붙여 사용 # 5 변수의 시작주소는 그 변수의 자료형의 주소를 의미 6 *연산자를 주소앞에 붙이면 메모리 이름으로 사용할 수 있다. 즉..int형 변수 n이 있다면 &n은 int형 주소이고.. *&n은 n과 같다.. 포인터란 주소를 저장하기 위한 메모리 공간이다. 주소를 저장하는 변수 포인터 포인터 변수의 선언은 *를 붙여 선언한다. char *cp는 char형 주소를 저장하는 변수 cp를 의미 포인터 변수의 크기는 항상 4byte다 *은 주소앞에 사용하..
-
Template (3) 클래스 템플릿 특수화@ 16. 1 ~ 17. 1/C++ 2013. 1. 29. 20:40
특수화하는 이유는?? 특정 자료형에 대해서 구분이 되는 다른 행동을 보이기 위해서.. typename 이런식으로.. 다음과 같은 정의된 클래스 템플릿.. template class Point { private: T xpos, ypos; public: Point(int x=0, int y=0) : xpos(x), ypos(y) {} void ShowPosition() const; }; 이런식으로..특수화를 해준다.. template class Point { private: char *string; public: void ShowData(char *str) { string = new char[strlen(str)+1]; strcpy(string,str); cout