1-8 배열과 구조체
① 배열과 함수
• 배열(arrays)이란?
- 배열의 필요성 : 여러개의 데이터 한 번에 선언하고 각각의 데이터에 접근하여 처리할 수 있는 방법이
필요함
• 배열선언과 메모리
- 배열명 a은 그 자체가 주소이기에 &가 없어도 주소를 의미한다
a= &a[0] / a+1 = &a[1]
a[2]=70; == *(a+2) 70; // a[2]에 있는 값을 70으로 바꿀 때!
• 배열 예제
#include<stdio.h>
/*배열 예저*/
int main()
{
int score[5] = {10,20,30,40,50};
int i, n, sum=0;
n = sizeof(score)/sizeof(int); //배열원소의 수
printf("\n ** score 배열**\n");
for(i=0;i<n;i++)
{
printf("score[%d] = %d\n", i, score[i]);// 배열원소의 값
}
printf("\n ** score 배열주소**\n");
for(i=0;i<n;i++)
{
printf("score[%d]의 주소 = %d\n", i, &score[i]);// 배열 원소의 주소
}
for(i=0;i<5;i++)
{
sum+=score[i];
}
printf("\n배열합: %d", sum ); //배열 원소 합
}
• 배열과 함수
- 함수를 이용한 배열의 합 구하기 문제
#include<stdio.h>
void add_arrays(const int a[], const int b[], int absum[],int n);
int add_arrays(int x[],int y[]);
int main()
{
int x[]={10,20,30,40,50};
int y[]={45,55,33,28,35};
int xysum[]={0};
int i,n=5;
printf("\n x 배열원소 출력\n");
for(i=0;i<5;i++)
{
printf("x[%d]=%d\n",i,x[i]);
}
printf("\n y 배열원소 출력\n");
for(i=0;i<5;i++)
{
printf("y[%d]=%d\n",i,y[i]);
}
add_arrays(x,y,xysum,n);//함수호출
printf("\n xysum 배열원소 출력\n");
for(i=0;i<5;i++)
{
printf("xysum[%d]=%d\n",i,xysum[i]);
}
}
void add_arrays(const int a[], const int b[], int absum[],int n)
//absum은 그대로 주소를 가리키니까 주소에 가서 값 바꿔줌
//매개 변수가 배열이라서 포인터로도 사용할 수 있음
{
for(int i=0;i<n;i++)
{
absum[i]= a[i]+b[i];
}
}
- 함수에 배열을 넘기면 주소가 넘어가지만 원본 배열의 값을 변경할 수 없도록 const 사용!
- 매개변수에서 배열형식 [ ]으로 받아줄 경우, 포인터*를 쓰지 않아도 [ ] 연산자를 사용하여
원본의 배열을 직접 접근하여 읽거나 쓸 수 있는 기능을 제공함.
'Language > C' 카테고리의 다른 글
[포스코 AI·Big Data 아카데미 사전학습] 컴퓨터 공학 입문 1-8_②배열과 구조체 (0) | 2023.06.10 |
---|---|
[포스코 AI·Big Data 아카데미 사전학습] 컴퓨터 공학 입문 1-7 파일 입출력 (0) | 2023.06.07 |
[포스코 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 |