포인터(2)
-
[C] 포인터 변수를 사용하는 swap 함수의 이해
포인터 변수를 배울 때 실패한 swap함수의 사례로 아래와 같이 작성한다.#include void swap(int* a, int* b){ printf("swap func inner value a: %d, b: %d\n", a, b); int tmp; tmp = a; a = b; b = tmp;}int main(){ int a = 10, b = 20; printf("a value: %d, b value: %d\n", a, b); swap(&a, &b); printf("a value: %d, b value: %d", a, b); return 0;}직관적으로 생각해보면 왜 위의 함수가 동작하지 않는 지 이해가 잘 안된다. swap함수 내부의 a 변수에는 m..
2024.07.28 -
[C] 왜 scanf에서는 주소값을 인자로 받는가 ?
Python, Java를 하던 사람 입장에서는 메모리와 상호작용을 직접적으로하는 저수준 언어인 C에서 생소한 개념 혹은 직관적으로 와닿지 않는 부분이 여러가지 있다. 그 중 첫 번째로 만나게 되는 것은 scanf 이다.scanf란 ? scanf는 scan formatted의 약자로 정해진 타입으로 standard input을 통해서 입력받는 함수이다. 아래와 같이 쓴다.int a;scanf("%d", &a);왜 scanf에서는 포인터를 쓰는가?C에서는 변수를 먼저 메모리에 할당하여 쓰게된다. 우리는 scanf 함수를 호출하여 std in을 받으면 그 값이 a라는 int형 변수에 할당되길바란다. 따라서 아래와 같이 사용하면 된다고 직관적으로 생각할 수 있다.int a;scanf("%d", a);하지만 이렇..
2024.07.27