본문 바로가기

프로그래밍/C

포인터(Pointer)와 함수 swap함수는 대개 다음과 같이 만든다. void swap(int *a, int *b) { int temp = *a; *a = *b; *b = temp; } 이렇게 하는 이유는 포인터가 아닌 그냥 변수를 넣어줄 경우에 원하는 결과가 나오지 않기 때문이다. 이유인 즉, 함수를 호출할 때에 새로운 스택이 잡히게 되고 함수의 인자도 그 스택 안에 새로 할당된 값이다. 그런데 이때 변수 값을 넘겨주게 되면 함수에 있는 인자에 그 값이 들어가게 되는 것이다. 예를 들어 void swap(int a, int b) { int temp = a; a = b; b = temp; } 라는 함수를 만들고 main에서 i=2, j=3을 할당한 뒤 swap(i, j);를 호출하면 새로운 스택이 만들어 지는데, 이 스택의 a라는 .. 더보기
memset() 함수 void *memset( void *dest, int c, size_t count ); 대략적인 사용법은 아래와 같다. char a[10]이 있고, c의 각 원소를 0으로 초기화 해주려면 memset(a, 0, 10); // 또는 memset(a, 0, sizeof(a)); 여기에 두번째 원소에 어떠한 정수를 넣어주냐에 따라 초기화되는 값이 바뀌는 것이다. 그런데 여기서 주의할 점은 무조건 1바이트씩 초기화한다는 것이다. 이것이 무슨 말이냐면,, char a[10]의 경우에는 아무런 문제도 찾을 수 없다. 하지만 int a[10]의 경우에는 말이 다르다. memset(a, 0, 10); 하게 되면 문제를 못 느낄지도 모른다. 하지만, memset(a, 1, 10);을 하는 순간 경악을 하게 될 지도 모른.. 더보기