1-3 함수
① 사용자 정의 함수
• 함수란?
- 독립적으로 수행하는 프로그램 단위
(프로그램에서 반복적으로 수행되는 기능을 함수로 만들어서 호출)
• C 프로그램 함수의 종류
- 주(main)함수 : 프로그램 시작 & 종료 나타내는 함수 (꼭 있어야 함!)
- 사용자 정의 함수 : 프로그래머가 문제분석 후 필요한 기능으로 분류하여
기능별로 코딩하고자 할 때 만드는 함수
- 시스템 라이브러리 함수 : 많이 사용되는 기능의 함수를 시스템에서
미리 만들어 사용자가 사용할 수 있도록 제공하는 함수
• 함수의 정의 = 함수 만들기
- 두개의 정수를 매개변수로 입력받아 처리 후 리턴하는 함수 만들기
int add(int x, int y) // 함수의 머리
{ int sum; // 함수의 몸체
sum = x+y;
return sum;
}
• 함수 원형 (function prototype)
- 함수 사용하기 전에 '함수의 원형'을 기술함
② 함수와 매개변수
• 매개변수 없는 함수 만들기
#include <stdio.h>
void hello(); //함수 원형 제시
int main() //매개변수 값 넘기거나 받아오지 않음
{
hello(); //함수 호출
}
void hello()
{
printf("Hello,POSCO");
return; // 나를 호출한 쪽으로 돌아가렴!
}
• 매개변수 있는 함수 만들기
- 매개변수 : 함수와 함수사이에 주고 받는 값
#include <stdio.h>
int add(int a, int b);//함수 원형 제시
int main() //매개변수 값 넘기거나 받아오지 않음
{
int a=0,b=0,sum=0;
printf("정수값을 두개 입력하세요");
scanf("%d %d", &a, &b); //10,30
sum = add(a,b); //call by value : 함수 호출하며 값을 넣어 보내기
printf("%d +%d = %d\n",a,b,sum);
}
int add ( int a, int b)
{
int sum;
sum = a+b; // 매개변수 불러오면서 a,b 변수(저장공간) 따로 만듦
return sum; // sum값을 호출한 쪽으로 보내자!
}
③ 함수 호출 방법
• 값에 의한 호출 (call by value)
• 주소에 의한 호출 (call by adress) : 주소를 넣어서 보낸 변수에 대해서만 함수가
찾아와서 값을 바꿀 수 있게 하는 방법
- 포인터 변수 : 주소를 값으로 가지는 변수(저장공간)
- 역참조 연사자 : 포인터 변수 선언 후 문장 내에서 포인터 변수 앞에*가 오면 (*p)
포인터 변수가 가리키는 main 변수 값 변경가능
• swap 함수 코드
#include <stdio.h>
void swap(int *p, int *q);
int main()
{
int a=0,b=0,sum=0;
printf("정수값을 두개 입력하세요");
scanf("%d %d", &a, &b); //50, 100
swap(&a,&b); //call by address : 함수 호출하며 주소를 넣어 보내기
printf("두값을 swap 함수로 바꾸면 %d %d 입니다.\n",a,b);
}
void swap ( int *p, int *q)
{
int temp=0;
temp = *p; // temp에 a에 주소값 불러와서 그 값을 넣음.
*p = *q; // p에 q주소값(원래 b주소에 있던 값) 넣고 a주소로 가서 이 값을 넣음!
*q = temp; // q에 temp값(원래 a 주소에 있던 값) 넣고 b주소로 가서 이 값을 넣음!
}
'Language > C' 카테고리의 다른 글
[포스코 AI·Big Data 아카데미 사전학습] 컴퓨터 공학 입문 1-6 반복문 (0) | 2023.06.05 |
---|---|
[포스코 AI·Big Data 아카데미 사전학습] 컴퓨터 공학 입문 1-5 조건문 (0) | 2023.06.05 |
[포스코 AI·Big Data 아카데미 사전학습] 컴퓨터 공학 입문 1-4 연산자 (0) | 2023.06.05 |
[포스코 AI·Big Data 아카데미 사전학습] 컴퓨터 공학 입문 1-2 (0) | 2023.06.05 |
[포스코 AI·Big Data 아카데미 사전학습] 컴퓨터 공학 입문 1-1 (0) | 2023.06.05 |