EASY7

[C언어 13강]함수에서 배열 사용하기 본문

개발 공부/C

[C언어 13강]함수에서 배열 사용하기

E.asiest 2016. 7. 8. 00:28

 

[1] 배열의 크기를 직접 지정할 때

#include<stdio.h>

void main()

{

int sample[5]={10,20,30,40,50,};

int avg;

avg=function(array, 5);

printf("평균은 %d입니다.",avg);

}

int function(int a[] , int length)/*배열의 크기 직접 지정할 때*/

{

int i, tot=0;

for(i=0; i<length; i++ )

tot+=a[i];

return tot;

}

 Q. for에서 length 쓰려고 그러는데 array.length같은 것은 못쓰나요?

 

 

[2]배열의 크기를 미리 지정할 때 프로젝트 전제에 적용됨

#include<stdio.h>

#define SIZE 10  /* 상수 정의함. =쓰지말고 ;도 쓰지말기*/

void main()

{    

int sample[5]={10,20,30,40,50,};

int avg;

avg=function(array)/SIZE;

printf("평균은 %d입니다.",avg);

}

int function(int a[])/*배열의 크기 직접 지정할 때*/

{

int i, tot=0;

for(i=0; i<SIZE; i++ )

tot+=a[i];

return tot;

}

 

 

[3] sizeof()함수 이용하기

배열의 크기가 10일 때 int type이면 4byte씩 할당됨

sizeof(array)하면 4*10=40이 반환됨

sizeof(array[0]);의 값은 4 반환

 

포인터 이용

sizeof(*array) array배열의 첫번째 원소!

실제 원소의 개수를 구할 때는

length=sizeof(array)/sizeof(*array);

 

Q.배열이 미리 정해놓은 크기와 실제 데이터가 있는 개수는 어떻게구별?

 

실습1. 배열에 등록된 데이터 중 3의 배수이면서 5의 배수를 만족하는 데이터의 개수

#include<stdio.h>

void main()

{

int arr[]={12,25,9,33,55,60,4,15,80,35,45,23,105};

int i=0, num=0;

while(i<sizeof(arr)/sizeof(*arr))

{    

if(arr[i]%3==0 && arr[i]%5==0)

num++

i++

}

printf("이 배열에서 3의 배수이면서 5의 배수인 데이터의 개수는 %d입니다.", num);

 

}

 

선생님께서는 함수도 이용하셨네요

#include<stdio.h>

void main()

{

int arr[]={12,25,9,33,55,60,4,15,80,35,45,23,105};

int length=sizeof(arr)/sizeof(*arr);

for(int i=0;i<length; i++)

printf("%d\n" , arr[i]);

printf("이 배열에서 3의 배수이면서 5의 배수인 데이터의 개수는 %d입니다.", calc(arr, length);

}

int calc(int array[], int length)

{

int i, num=0;

while(i<length)

{    

if(arr[i]%3==0 && arr[i]%5==0)

num++

i++

}

return num;

}

 

 

Q. while문에서 괄호안에 int i써도 되나?

Comments