Programming/C 언어
-
가변인자 va_list va_start va_arg va_endProgramming/C 언어 2016. 10. 28. 14:10
#include int sumArgs(int a, ...){va_list args;// 가변 인자 setint sum=0;int arg; sum += a;__crt_va_start(args, a);// 가변인자 start//va_start(args, a);for (;;){arg = __crt_va_arg(args, int);// 가변인자 get//arg = va_arg(args, int);if (0 == arg)// 가변인자가 0이면 종료 break;sum += arg;}__crt_va_end(args);// 가변인자 end//va_end(args);return sum;} int main(){int nTemp;printf("%d\n", sumArgs(1, 2, 3, 0));printf("%d\n", su..
-
[C언어] 함수퍼인터를 사용해서 자기스스로 환경을 비교Programming/C 언어 2008. 10. 30. 10:19
#include using namespace std; // ForWindows9x() 나 ForWindowsNT()를 가르킬수있는 포인터타입 정의 typedef void (*SYSTEM_FUNC)(); void ForWindows9x(); void ForWindowsNT(); bool IsWindows9x(); void ImportantFunc(SYSTEM_FUNC pfnSyst); int main() { // 함수포인터 변수 SYSTEM_FUNC pfn; // 시스템 버전에 따라서 알맞은 함수를 가리키게 만든다 if(IsWindows9x()) { pfn = &ForWindows9x; } else { pfn = &ForWindowsNT; } // 중요한 함수호출 함수주소를 넘겨준다 ImportantFun..
-
[C언어] 2차원 배열포인터의 타입Programming/C 언어 2008. 10. 28. 12:49
1차원 배열의 포인터 타입을 결정할때 우리는 포인터의 자료형과 포인터 연산시 증가하는 바이트 크기가 같다 는것을 알고 있다.그럼 2차원 배열은 어떨까? 1차원 배열과 같을까? 이렇게 같으면 얼마나 좋으련만.. 그렇지가 않다.포인터의 자료형은 1차원배열과 마찬가지로 포인터가 가르키는 자료형과 일치하지만 포인터 연산시 증가하는 바이트의 크기가 틀리다. 같은 int형 배열이더라도 증가하는 값은 4byte로 동일한것이아니라 그때 그때 틀리다는 것이다.예를 들어 보자.int arr[3][2] = {1,2,3,4,5,6};위와같이 3*2배열이 있다.자료형은 당연히 int형일테지만 포인터 연산시 증가하는 값은 몇byte일까?확인하는 간단한 방법은 주소값을 출력하면 되겠죠printf("arr[0] : %d\n",arr..