본문 바로가기

포인터8

포인터의 포인터(17-1) 포인터의 포인터에 대한 이해 포인터의 포인터는 포인터 변수를 가리키는 또 다른 포인터 변수를 뜻함 "이중 포인터" or "더블 포인터" 라고 부름 ** : 이중 포인터 변수 or 더블 포인터 변수 * : 싱글 포인터 변수 포인터 변수를 가리키는 이중 포인터 변수(더블 포인터 변수) 포인터 변수는 종류에 상관없이 무조건 주소 값을 저장하는 변수. 다만 차이가 나는 것은 포인터 변수가 가리키는 대상일 뿐 int main(void) { double num = 3.14; double* ptr = # // 변수 num의 주소 값 저장 } 변수 num과 포인터 변수 ptr의 차이점과 공통점 공통점 : 둘 다 변수임. 따라서 값의 저장이 가능하다. 차이점 : 저장하는 값의 종류(유형)이 다르다. ptr도 메모리 공간에 할당이 되는 변수... 2020. 12. 9.
다차원 배열(16-2) 3차원 배열 큐빅퍼즐은 3차원의 구조 가로, 세로, 높이가 있음 3차원 배열은 중심부의 블록이 채워진 형태의 큐빅퍼즐에 비유할 수 있음 3차원 배열 : 가로와 세로로 이뤄진 2차원 배열 + 높이의 개념 int arr1[2][3][4]; // 높이 2, 세로 3, 가로 4인 int형 3차원 배열 double arr2[5][5][5]; // 높이 5, 세로 5, 가로 5인 double형 3차원 배열 배열의 크기 확인 #include int main(void) { int arr1[2][3][4]; double arr2[5][5][5]; printf("높이2, 세로3, 가로4 int형 배열 : %d\n", sizeof(arr1)); printf("높이5, 세로5, 가로5 double형 배열 : %d\n", sizeof(ar.. 2020. 12. 9.
다차원 배열(16-1) 다차원 배열의 이해와 활용 다차원 배열 : 2차원 이상의 배열 2차원, 3차원 배열? OK! 4차원, 5차원 배열? NO! 2차원 배열 : 평면 구조 3차원 배열 : 직육면체 구조 4차원, 5차원 : .... 1차원 배열 길이가 10인 1차원 int형 배열 int arronedim[10]; 2차원 배열 가로, 세로의 길이가 5인 2차원 int형 배열 int arrtwodim[5][5]; 3차원 배열 가로, 세로, 높이의 길이가 3인 3차원 int형 배열 int arrthreedim[3][3][3]; 다차원 배열을 대표하는 2차원 배열의 선언 int arr1[3][4]; // 세로가 3, 가로가 4인 int형 2차원 배열 int arr2[2][6]; // 세로가 2, 가로가 6인 int형 2차원 배열 배열요소 안에 삽입된 두 개의 .. 2020. 12. 9.
포인터와 함수에 대한 이해(14-3) 포인터 대상의 const 선언 기존의 const 선언은 변수를 상수화하는 목적의 const 선언 이러한 const 선언은 포인터 변수를 대상으로도 선언이 가능하다. 포인터 변수가 참조하는 대상의 변경을 허용하지 않는 const 선언 #include int main(void) { int num = 20; const int* ptr = # *ptr = 30; // 컴파일 에러! num = 40; // 컴파일 성공! } const 선언에서 주의 깊게 봐야 할 것은 const의 선언 위치 맨 앞부분에 선언이 되면, 포인터 변수 ptr을 대상으로 다음의 의미가 담겨짐 "포인터 변수 ptr을 이용해서 ptr이 가리키는 변수에 저장된 값을 변경하는 것을 허용하지 않겠다" 때문에 *ptr=30에서 컴파일 에러가 발생한다. 그렇다고 해서 포인.. 2020. 12. 8.