프로그래밍 씨,씨,씨 - 함수, union

2023. 1. 10. 19:51프로그래밍

728x90

목차

1. C의 함수

​1.1 기본 구조

​1.2 함수와 배열

​2. Union

​3. static 변수

1. C의 함수

 C의 함수는 리턴 값을 가질 수도, 가지지 않을 수도 있다(void).

 

1.1 기본 구조

다음을 기억하자

returntype fn_name(1, parameterdef2,)
{
  지역 변수들...
  함수 코드들...
}
 

  

1.2 함수와 배열

 다음과 같이 일차원 배열을 파라메터로 받는 함수 findaverage 가 있다. 

float findaverage(int size,float list[])
{
	int i;
	float sum=0.0;

	for (i=0;i<size;i++)
		sum+=list[i];
	return(sum/size);
}
 

여기서 파라메터가 일차원 배열일 경우에는 그 배열의 차원을 정의하지 않는다.

다음과 같이 이차원 배열을 아규먼트로 받는 함수 printtable 이 있다.

void printtable(int xsize,int ysize,float table[][5])
{

	int x,y;

	for (x=0;x<xsize;x++)
	{
		for (y=0;y<ysize;y++)
			printf("t%f",table[x][y]);
		printf("n");
	}
}
 

여기서 float table[][5]의 의미는 float 값의 N*5 차원의 배열을 가진 table 이라는 의미이다.

 

** 여기서 명심해야 할 것은, 두개의 배열에서는 두번째 배열의 차원은 명시하되, 첫번째 배열의 차원은 명시하지 않는다.

 

2. Union

프로그램이 특정 시간에 사용되어 진 union 변수의 타입을 지속적으로 추적할 수 있도록 union과 union 타입을 표시하는 변수와 구조체가 사용하는 것이 일반적이다.

 

예제:

typedef struct
{ int maxpassengers;

} jet;

typedef struct
{ 
	int liftcapacity;
} helicopter;

typedef struct
{ int maxpayload;
} cargoplane;

typedef union
{ jet jetu;
	helicopter helicopteru;
	cargoplane cargoplaneu;
} aircraft;

typedef struct
{ aircrafttype kind;
	int speed;
	aircraft description;
} an_aircraft;
 

이 예제는 jet, helicopter, 혹은 cargoplane이 될 수 있는 기본 union인 aircraft을 정의하고 있다.

an_aircraft 구조체에서 특정 시점에 어떤 구조체가 사용되고 있는 지를 알 수 있는 kind 멤버가 있음을 주목하면 된다.

 

3. static 변수

static 변수는 특정 함수의 로컬 변수이지만, 한번만 초기화 된다.(함수가 처음 불려질때)

함수 범위내에서 벗어 나더라더도 변수의 값은 여전히 저장된다. 같은 함수에 대해 다음 호출이 들어와도 저번 호출에서 있던 값이 저장되어 있다.

 

이상.

 

728x90