Chapter 12. 저자는 이 챕터에서 기본적인 함수 관련 문법, 메모리의 동적 할당 및 해제에 알고 있는 상태에서 논할 수 있는 함수에 대한 이론들을 다룬다. 12.1 매개변수 전달 방법 두 함수가 호출 / 피호출 관계로 묵이는 것을 바인딩(binding)이라고 한다. 그리고 함수 호출 과정에서 매개변수로 전달되는 정보가 무엇이냐에 따라 매겨변수 전달방법이 달라진다. 기본적으로 매개 변수 전달 방법은 값이냐 주소냐에 따라, Call by Value Call by Reference 12.1.1 Call by value Call by value는 간단하므로 하나의 예제를 통해 설명하도록 하겠다. #include int Add(int a, int b){ return a + b; } int main(int ..
일반 변수의 경우 이름, 주소, 그안에 저장된 정보 이 셋이 매우 명확하게 구별됩니다. 포인터는 변수 자체의 주소와 변수에 저장된 주소, 이렇게 두 개의 주소가 공존하기 때문입니다. 다중 포인터라는 것은 포인터가 가리키는 것이 포인터 변수일 뿐입니다. 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..
- Total
- Today
- Yesterday
- 자료구조
- 구조체
- call by value
- 간접 지정
- Algorithm
- 직접 지정
- 알고리즘
- call by reference
- 회전리스트
- 공용체
- 포인터
- 배열
- 1차원 배열
- 2차원 배열
- 시간복잡도
- 강의
- 프로그래밍
- 공부
- 비트필드
- 재귀함수
- 다차원 배열
- inflearn
- 3차원 배열
- 종류
- 공간복잡도
- codeit
- 파이썬
- C
- timecomplexity
- 형승격
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |