본문 바로가기

이중포인터3

[C/C++] 함수인자로써 이중포인터와 가변길이배열 지난 게시글 : https://microelectronics.tistory.com/50 [C/C++] 동적 2차원 배열과 가변길이배열(VLA)C언어의 표준에서는 고정된 크기의 배열을 선언할 때 배열의 크기를 컴파일 시간에 알 수 있어야 했다. 그렇기 때문에 C99 표준 이전에는 배열의 크기로 변수를 사용하는 것이 허용되지 않았다.microelectronics.tistory.com 이중포인터와 가변길이 2차원배열2중포인터로 동적 2차원 배열을 만들었다고 하더라도, 여전히 변수의 타입은 이중포인터다.하지만 배열과 동작원리(주소가 가리키는 메커니즘)는 같으므로, 배열을 조종하듯 값을 넣고 뺄 수 있다. (물론 2중 포인터로 동적할당 시 각 행의 첫번째 요소들이 연속된 값을 가지도록 해야 한다. 아래 코드 참고.. 2024. 5. 13.
[C/C++] 이중포인터와 void 포인터 이중포인터와 void 포인터 문자열배열은 이중포인터이다 아래와 같이 문자열 배열이 있고, 해당 문자열배열의 주소를 void 포인터에 초기화시켰다고 가정해보자. char* arr[] = {"banana", "apple"}; void* vrr = arr; 여기서 다들 아는 내용을 정리해보자. 배열의 이름은 해당 배열의 첫 번째 요소의 주소를 나타내므로, arr는 &(arr[0])와 동일하다. arr는 char* 타입의 요소를 저장하는 배열이기 때문에, 이를 char** 타입으로 볼 수 있다. 즉, arr는 char* 타입의 배열의 첫 번째 요소의 주소를 가리키는 포인터이다. 포인터 변수의 크기는 64비트 시스템 기준 8바이트이다. 메모리 주소를 모두 표현해야 하기 때문이다. arr 는 문자열포인터의 배열로,.. 2024. 4. 20.
[C/C++] 동적 2차원 배열과 가변길이배열(VLA) C언어의 표준에서는 고정된 크기의 배열을 선언할 때 배열의 크기를 컴파일 시간에 알 수 있어야 했다. 그렇기 때문에 C99 표준 이전에는 배열의 크기로 변수를 사용하는 것이 허용되지 않았다. 하지만 C99부터는 '가변 길이 배열'(Variable Length Arrays, VLAs)의 개념이 도입되어 실행 시간에 배열의 크기를 결정할 수 있게 되었습니다. 즉, 배열의 사이즈에 변수가 들어가도 됐다. 그 이전에는 동적할당을 이용하여, 이 문제를 해결했다. 아래는 VLA 를 사용하여 입력받은 높이와 너비에 해당하는 사각형을 숫자로 채우는 코드이다. #include int main(){ int n; int m; while (1){ scanf("%d",&n); scanf("%d",&m); if ( n > 0 &.. 2024. 4. 11.