본문 바로가기

함수

(4)
Chapter 16. 함수 포인터 Chapter 16.함수 포인터 함수를 가리킬 수 있는 포인터!! 많이 사용되지는 않지만 수치해석과 같은 분야에서 함수 포인터가 없다면 상당히 프로그램이 복잡해짐을 느낄 수 있을 것이다. 트리를 순회하는데 재귀함수 기능이 없다면 구현에 훨씬 많은 시간과 노력이 필요할 것이다. 함수 포인터의 개념과 기본적인 활용에 대해 간단히 짚고 넘어가자. 함수 포인터의정의 type (*name)(arg list); "name"은 함수를 가리킬 수 있는 포인터 변수이다. 그러므로name에 대한4byte가 할당된다. "type"은name이 가리키는 함수가 리턴하는 형(type)을 말하고,"arg list"는 name이 가리키는 함수의 매개변수 리스트이다. int (*imsi)(int, char *); imsi가 가리키는 ..
Chapter 15. 함수 인자 포인터 Chapter 15.함수 인자 포인터 함수에 인자 넘기는 포인터는 지칭한다. 이것을 잘 모르면변수를 잘 정의하고 사용할 지라도 다른 함수에 넘길 수 없기때문에 현재의 함수 안에서만 포인터 변수를 사용하게 될지도 모른다. 1차원 함수 인자 포인터 15_1.c #include main() { void add(int *); int imsi; imsi = 100; add(&imsi); printf("imsi : %d\n", imsi); } void add(int *imsi) { *imsi = 1024; } gcc-o 15_1 15_1.c ./15_1 imsi : 1024 위 프로그램은 포인터를 다른 함수에 넘기기 위해서 어떻게 함수의 원형을 선언하고 본체는 어떻게 작성해야 하는지 그리고 호출할 때 주의할 것은 ..
Chapter 11. 가변 인자 Chapter 11.가변 인자 마을 풀어보면 "인자가 변한다"가 될것이다. 정학한 뜻은 인자의 개수가유동적으로 변한다는 것이다. 따라서, 지금까지 인자의 개수를 한정지어 작성되었던 프로그램(인자의 개수에 따라 처리 함수가 여러개 존재하는)을 훨씬 간단하게 작성할 수 있다. 가변 인자 사용 단계 1. 함수의 원형 정의 int function(int, ...); 인자 리스트에"..."을 사용한다. 2. 함수의 본체 작성 int function(intcount, ...) { } 함수본체에서는 원형에서 생략했던 변수명을사용해야 한다는 것을 제외하고는원형과 크게 다르지 않다. 3. 헤더 파일 포함 #include 위처럼 헤더 파일을 포함해야 가변 인자를 사용할 수 있다. 가변 인자를 위한 매크로 가변 인자를 위한..
Chapter 10. 바로알자 getchar() Chapter 10.바로알자getchar() 특히 초보자에게황당한논리적인 에러를 짚고 넘어가자. 10_1.c #include main() { int input_char = 0; while(1) { printf("Input character : "); input_char = getchar(); if((input_char == 'y') || (input_char == 'Y')) puts("OK, 'y' input"); else puts("NO"); } } gcc -o 10_1 10_1.c ./10_1 Input character : y OK, 'y' input Input character : NO Input character : n NO Input character : NO Input character : ..