일반 변수의 경우 이름, 주소, 그안에 저장된 정보 이 셋이 매우 명확하게 구별됩니다. 포인터는 변수 자체의 주소와 변수에 저장된 주소, 이렇게 두 개의 주소가 공존하기 때문입니다. 다중 포인터라는 것은 포인터가 가리키는 것이 포인터 변수일 뿐입니다. int형 변수에 대한 포인터는 'int*'로 기술하며, int*변수에 대한 포인터는 'int**'로 기술합니다. 그리고 선언된 포인터 변수에 대해 간접지정 연산을 수행한 결과는 포인터의 대상 자료형에서 '*'하나를 지운 것과 같습니다. 포인터 자료형 간접지정 연산결과 코드 예 char * *(char *) == char int nData = 10; int *pnData = &nData; char* * *(char **) == char* int* *ppnDa..
저자는 메모리 동적 할당 및 해제를 "어른스러운 혹은 자유에 대한 책임이 따르는 메모리 사용방법"이라고 비유합니다. malloc() 함수와 free()함수를 소개하겠습니다. 이 함수들을 호출하기 위해서는 헤더에 #include를 포함해야합니다. malloc() 함수는 인수로 전달받은 정수만큼의 바이트 단위 메모리를 동적으로 할당하고 주소를 반환합니다. 이 주소는 할당받은 메모리 전체에 대한 기준주소입니다. 따라서 이 주소를 기준으로 나머지에 접근할 수 있습니다. 그리고 사용이 끝난 다음에는 반드시 free() 함수를 이용해 메모리를 운영체제에 반환해야합니다. void *malloc(size_t size); 인자 size 할당받을 메모리의 바이트 단위 크기 반환값 힙 영역에 할당된 메모리 덩어리 중 첫 번..
배열의 이름은 0번 요소의 주소이며, 전체 배열을 대표하는 식별자입니다. 그리고 포인터 변수는 주소를 저장하기 위한 변수입니다. 이 점을 이용해 알아낼 수 있는 것은 "배열의 이름이 주소이므로, 포인터 변수에 저장할 수 있다"입니다. #include int main(void) { //int 배열 선언 및 정의. 배열의 이름은 연속된 각 요소들 중 전체를 대표하는 0번째 요소에 대한 '주소 상수'이다. int aList[5] = { 0 }; //int에 대한 포인터 변수를 배열의 이름으로 정의 int* pnData = aList; // int* pnData = &aList[0];과 같다고도 볼 수 있다. printf("aList[0] : %d\n", aList[0]); //포인터가 가리키고 있는 배열의 0..
메모리와 포인터에 들어가기에 앞서, 메모리에 대해 간략하게 소개하겠습니다. 변수의 본질은 메모리이며 모든 메모리는 자신의 위치를 식별하기 위한 근거로 고유번호(일련번호)를 갖는데, 이 번호를 메모리의 주소라 합니다. 메모리의 종류 메모리는 그 용도에 따라 스택(stack), 힙(heap), 데이터 영역(data section), 텍스트 영역(text section) 등으로 나누어 집니다. 분류 특징 Stack 자동변수이고 지역변수인 변수가 사용하는 메모리 영역 / 크기가 작고 관리(할당 및 반환)가 자동으로 이루어 지는 장점입니다. Heap 동적 할당할 수 있는 자유 메모리 영역이며, 개발자 스스로 관리(수동)해야 합니다. 따라서 대량의 메모리가 필요하거나 필요한 메모리의 크기를 미리 알 수 없을 때 사..
- Total
- Today
- Yesterday
- 배열
- timecomplexity
- 구조체
- 비트필드
- 강의
- codeit
- 2차원 배열
- 형승격
- 알고리즘
- 3차원 배열
- 직접 지정
- call by value
- 간접 지정
- Algorithm
- 파이썬
- 공간복잡도
- 1차원 배열
- 시간복잡도
- C
- inflearn
- 공용체
- 재귀함수
- 회전리스트
- 종류
- 자료구조
- 포인터
- 공부
- 다차원 배열
- 프로그래밍
- call by reference
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |