[프로그래밍 언어] 6. Subprograms
Y
Yerim
- Programming Language
#include <stdio.h>
int add(int, int); // 함수 선언 -> 헤더 파일에 위치
int main(void){add(2, 1);} // 함수 호출
int add (int x, int y){} // 함수 정의def add(a, b): return a + b # 형식 매개변수 a, b
result = add(3, 5) # 실 매개변수: 3, 5# 형식 매개변수: income, tax_rate, exemptions
# 키워드 매개변수: exemptions=1 -> 디폴트 값은 1
float compute_pay(float income, float tax_rate, int exemptions=1)int adder(int list[], int listlen){
static int sum = 0; // 정적
int count; // 스택 동적 -> 대부분의 언어에서 디폴트로 스택 동적
for(count = 0; count < listlen; count++) sum+=list[count];
return sum;
}void Fixer(out int x, out int y){
x = 17;
y = 35;
}
f.Fixer(out a, out a);void DoIt(out int x, out int index){
x = 17;
index = 42;
}
sub = 21;
f.DoIt(list[sub], sub);// 별칭 생성 방법
// 1. 실 매개변수 사이 충돌
void fun(int &first int &second){...}
fun(total, total);
// 2. 배열 원소 사이의 충돌
fun(list[i], list[j]) // i = j
// 3. 배열의 원소 vs 배열
fun(list[i], list);// 4. 형식 매개변수 vs 비지역변수
int *global; // tree의 root
void sub(int *param){...}
void main(){
sub(global);
}void swap(int *a, int *b)
{
int tmp;
tmp = *a;
*a = *b;
*b = tmp;
a = 1000;
}void swap(int *a, int *b)
{
*a += *b;
*b = *a - *b;
*a = *b - *a;
}address(mat[i, j]) = address(mat[0, 0]) + i * number_of_columns + j
*(mat_ptr + (i * num_cols) + j) = x;int myfun2(int, int); // 함수 선언
int (*pfun2) (int, int); // 함수 포인터를 생성
...
pfun2 = myfun2; // 포인터에 배정
...
(*pfun2)(first, second); // 역참조
...
pfun2(first, second); // 역참조 Xf = fooint fun(int x)
float fun(int x)
void fun(float b=0.0)
void fun()def __add__(self, second):
return Complex(self.real + second.real, self.image + second.image)