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

+ Recent posts