C언어 Chapter 21.
🔔 예)
🎯 프로그램 설명
결과 : warning 메시지는 뜨지만 1을 출력 한다. 하지만, *(p+1) 을 해보면 포인터 p는 1차원 이동만하는 것을 알수있다.
🔔 예) 포인터는 함수 인자로 사용하면 3차원배열을 이동 증명
🎯 프로그램 설명
결과 : mian 함수의 포인터 p는 1차원적 이동이 있고, 함수 인수로서로 p3은 포인터 형태로 3차원 이동이 가능하다.
int (*test [5])(int, int);
🔔 예) 함수 포인터 배열을 이용하여 사칙연산 수행 프로그램
====================================================
#include <stdio.h>
#include<process.h>
int get_operator();
int plus (int, int);
int minus (int, int);
int multiply (int, int);
int divide (int, int);
int get_operator()
{
int choice;
while(1)
{
printf("==============================\n");
printf("0 : for plus\n");
printf("1 : for minus\n");
printf("2 : for multiply\n");
printf("3 : for divide\n");
printf("4 : for quit\n");
printf("==============================\n");
printf("Please Enter operator: ");
scanf("%d", &choice);
if((choice >= 0)&&(choice <= 4))
{
return (choice);
}
else printf("Wrong Input, enter again!\n");
}
}
int main()
{
int op;
int num1;
int num2;
int result;
int(*hanlde[4])(int, int) = {plus, minus, multiply, divide};
while(1)
{
op = get_operator();
if(op == 4)
{
printf("This is the end of program!\n");
exit(0);
}
printf("Enter the frist operand : ");
scanf("%d", &num1);
printf("Enter the second operand : ");
scanf("%d", &num2);
result = hanlde[op](num1, num2);
printf("\nthe result of operation is %d\n\n", result);
}
return 0;
}
int plus(int n1, int n2)
{
return (n1 + n2);
}
int minus(int n1, int n2)
{
return (n1 - n2);
}
int multiply(int n1, int n2)
{
return (n1 * n2);
}
int divide(int n1, int n2)
{
return (n1 / n2);
}
====================================================
🎯 프로그램 설명
int (*hanlde[4])(int, int) = {plus, minus, nultiply, divide};
result = hanlde[op] (num1, num2);
결과 :
C언어 강좌 (void */보이드 포인터/gets() puts() 함수/make파일 변수선언) (0) | 2016.09.12 |
---|---|
C언어 강좌(문자열/make파일 만들기) (0) | 2016.09.12 |
C언어 강좌 (다차원 배열/함수인수 배열) (0) | 2016.09.12 |
C언어 강좌 (배열 복습/버블 정렬/const) (0) | 2016.09.08 |
C언어 강좌 (const/함수포인터/배열/배열의 선언과 사용/배열의 초기화/배열과 포인터) (0) | 2016.09.08 |