728x90 포인터3 C언어 - 포인터 활용, call by value, call by reference 간단하게 설명하면 call by value는 변수의 값을 부르는 것이고 call by reference는 변수의 참고(주소)를 부르는 것이다. 사실상 C언어에서는 call by reference 보다는 call by address라고 보는 게 맞다. 공식적으로 C언어에서 call by reference를 지원하지 않는다. call by address를 통해 call by reference와 같이 사용할 수 있다. Call by value 함수의 매개변수에 인수의 실제 값을 복사한다. 이경우 함수 안에서 매개변수끼리 값이 변하기 때문에 실제 인수 값에 영향이 가지 않는다. 즉 Call by value 함수 내에서만 값이 변경되고 실제 인수 값은 변함이 없게 된다. 실제 값을 변경할 필요가 없는 경우에 사용.. 2020. 10. 16. C언어 - 포인터 연산, 포인터와 배열의 관계 포인터 연산 예를 들어 포인터 변수 p에서 *p일 경우 주소가 가리키는 값을 표시하고 p일결우 주소 값을 가리킨다. 이점에 주의하여 연산을 해야 한다. *p += 1, *p++, (*p)++ 의 차이점을 알아보자! *p += 10 같은 경우는 쉽게 이해가 될 것이다. 큰 차이점을 보인 것은 (*p)++ 와 *p++이다. 연산자에서 우선순위가 있어서 나타나는 현상이다. 연산자의 우선순위를 따라 ++,--가 포인터 연산자보다 우선이다. 포인터 연산자는 우선순위 2위인 간접 참조*이다. 그래서 포인터보다 먼저 p의 값이 증가되어 주소 값이 증가된다. (int는 4 바이트 이므로 주소 값이 4가 증가된다.) ++,-- 연산자를 사용할 때 주의해야 한다. a = 0x7ffee993598c *a = 5 a++ = .. 2020. 8. 28. C언어 - malloc, free, sizeof 를 이용한 동적 할당 메모리를 할당할 때 malloc, calloc, realio 함수를 사용하여 메모리를 동적 할당한다. 동적 할당하는 이유는 메모리를 효율적으로 사용하기 위함이고 C언어 경우 메모리를 자동으로 관리를 해주지 않기 때문에 직접 관리해 메모리 누수를 예방 그리고 이미 할당된 메모리라도 언제든지 크기 조정할 수 있다. 하지만, 해제하지 않으면 누수가 발생하므로 꼭 명시적으로 메모리를 해제해야 한다. malloc 함수 ( memory allocate - 메모리 할당 함수) - 함수의 원형 //라이브러리 헤더파일 void *malloc (size_t size) //size_t 는 부호 없는 정수 //size 바이트의 메모리를 힙에서 할당하여 반환 int *i = (int*) malloc (sizeof(int)); .. 2020. 6. 26. 이전 1 다음 728x90