728x90
반응형
#include <stdio.h>
void Show(int* param, int len)
{
int i;
for (i = 0; i < len; i++)
{
printf("%d ", param[i]);
}
printf("\n");
}
int main(void)
{
int arr1[3] = { 1, 2, 3 };
int arr2[5] = { 4, 5, 6, 7, 8 };
Show(arr1, sizeof(arr1) / sizeof(int));
/*Show(arr2, sizeof(arr2) / sizeof(int));*/
printf("Function Memory layout addr : %p\n", Show);
int (*fptr)(int*, int) = Show;
fptr(arr2, sizeof(arr2) / sizeof(int));
return 0;
}
#include <stdio.h>
void SimpleAdder(int n1, int n2)
{
printf("%d + %d = %d\n", n1, n2, n1 + n2);
}
void ShowString(char* str)
{
printf("%s \n", str);
}
void ShowChar(char* str)
{
int i = 0;
while (str[i] != '\0') // NULL
{
printf("%c ", str[i]);
i += 1;
}
puts("");
}
int WhoIsFirst(int age1, int age2, int(*cmp)(int n1, int n2))
{
return cmp(age1, age2);
}
int OlderFirst(int age1, int age2)
{
if (age1 > age2)
{
return age1;
}
else if (age1 < age2)
{
return age2;
}
else
{
return 0;
}
}
int YoungerFirst(int age1, int age2)
{
if (age1 < age2)
{
return age1;
}
else if (age1 > age2)
{
return age2;
}
else
{
return 0;
}
}
int main(void)
{
char* str = "Function Pointer";
int num1 = 10;
int num2 = 20;
SimpleAdder(num1, num2);
ShowString(str);
ShowChar(str);
/* Declare function Pointer variable */
void (*Adder)(int, int) = SimpleAdder;
void (*ShowStr)(char*) = ShowString;
void (*showch)(char*) = ShowChar;
/* Call by function pointer variable */
Adder(num1, num2);
ShowStr(str);
showch(str);
puts("= = = = = E N D O F T H E P A R T = = = = =");
/* */
int MIKE_age = 20;
int JACK_age = 25;
int first;
first = WhoIsFirst(MIKE_age, JACK_age, OlderFirst);
printf("%d, %d : %d\n", MIKE_age, JACK_age, first);
first = WhoIsFirst(MIKE_age, JACK_age, YoungerFirst);
printf("%d, %d : %d\n", MIKE_age, JACK_age, first);
return 0;
}
#include <stdio.h>
int add(int num1, int num2)
{
return num1 + num2;
}
int sub(int num1, int num2)
{
return num1 - num2;
}
int Calculator(int num1, int num2, int(*cal)(int n1, int n2))
{
return cal(num1, num2);
}
int main(void)
{
int num_1 = 20;
int num_2 = 10;
/* Call by function */
printf("add : %d\n", add(num_1, num_2));
printf("sub : %d\n", sub(num_1, num_2));
/* Call by function pointer */
printf("add by ptr : %d\n", Calculator(num_1, num_2, add));
printf("sub by ptr : %d\n", Calculator(num_1, num_2, sub));
return 0;
}
728x90
반응형
'Language > C & C++' 카테고리의 다른 글
증감 연산자의 응용 (0) | 2023.04.15 |
---|---|
특수연산자 (괄호, 쉼표) (0) | 2023.04.15 |
Visual Studio Short-cut (0) | 2022.11.18 |
memset Function (0) | 2022.10.28 |
[C, Python]Compare Score (0) | 2022.10.26 |