안녕하세요. 스마트 팩토리입니다.
c 언어[019] 배열 Array , 인덱스, 배열 주소값 , 배열크기, sizeof(arr)에 대해 알아보겠습니다.
1. 배열(Array)
가. 배열
- 동일한 특성을 가지며 일정한 규칙에 따라 요소가 나열되어 있는 데이터 집합
- 1차원, 2차원 등으로 차원을 가진다.
- 변수보다 큰 범위로 일정한 규칙에 따라 동일한 데이터 형으로 인덱스를 가지고 있는 집합
나. 배열의 형식
c 언어 배열의 형식
int 배열변수명[ 숫자];
float 배열변수명[숫자];
int 배열변수명[];
ex) int arr[3];
배열 변수 arr[3]을 선언하고 초기화 했습니다.
일반변수와 큰 차이가 없을 수 있지만 동일한 데이터 형식의 값을 여러가지 저장할 때는 필수적입니다.
int arr[3] = {90,80,70};
정수형 배열 arr[3]을 생성하였습니다.
arr[3]은 순차적으로
arr[0]=90;
arr[1]=80;
arr[2]=70;
으로 할당이 됩니다.
printf("arr 값: %d \n",arr);
여기서 주목할 것은 arr 값을 출력하면 해당 주소값이 나옵니다.
그리고 배열의 첫번째 인덱스 arr[0] 입니다.
arr의 출력값(3341328)과 , &arr[0]의 주소값(3341328)은 같습니다.
그리고 각 배열의 인덱스별 주소값을 보면
arr[0]=3341328
arr[1]=3341332
arr[2]=3341336
끝자리가 4바이트 차이가 나는 것을 알 수 있습니다. 이는 배열의 자료형에 따른 크기로 인덱스별 동일한 크기로 저장되고 바로 이웃해서 저장되는것을 알 수 있습니다.
#include<stdio.h>
void main(){
int arr[3] = {90,80,70};
printf("arr 값: %d \n",arr);
printf("arr[0] 주소값 : %d이고 저장된 값은 %d 입니다.\n", &arr[0],arr[0]);
printf("arr[1] 주소값 : %d이고 저장된 값은 %d 입니다.\n", &arr[1], arr[1]);
printf("arr[2] 주소값 : %d이고 저장된 값은 %d 입니다.\n", &arr[2], arr[2]);
}
다. 배열의 합 구하기
배열의 합은 일반 변수의 합과 동일하지만 반복문을 활용하면 신속하게 구할 수 있고 코드도 짧아집니다.
sizeof(arr)은 배열 arr의 전체 크기를 의미합니다. 즉 배열 각 인덱스 하나하나 값을 모두 더한 값으로 주어진 경우 12바이트가 됩니다. 그래서 배열의 크기( 인덱스 수)를 알기 위해서
sizeof(arr)/ sizeof(int) 으로 하면 인덱스 수가 나옵니다. 즉 3이 나옵니다.
이는 배열의 총 수를 모를때 위와 같은 방법을 사용하면 편리합니다.
평균은 소수점 자리가 나오므로 실수형 float 형으로 표현 형식은 1.2f 로 하여 소수점 둘째자리까지 나타내도록 하였습니다.
#include<stdio.h>
void main(){
int arr[3] = {90,80,70};
int sum = 0;
float avg;
for (int i = 0; i < sizeof(arr)/sizeof(int); i++)
{
sum += arr[i];
}
avg = sum / (sizeof(arr)/sizeof(int));
printf(" 총점은 %d이고 평균은 %1.2f입니다. \n", sum, avg);
}
결과값까지 원하는 대로 나온 것을 알 수 있습니다.
'C 언어' 카테고리의 다른 글
c 언어[021] 배열 숫자 입력하고 그 입력한 값을 거꾸로 출력하는 코드- 배열의 크기=배열 요소의 개수 (0) | 2021.09.30 |
---|---|
c 언어[020] 포인터 변수(메모리 주소를 가리키는 변수) (0) | 2021.09.28 |
c 언어[018] 비트연산자(1) <<,>>쉬프트연산자, &(and), |(or) (1) | 2021.02.24 |
c 언어[017] 사용자 정의 함수 (7) | 2020.10.13 |
c언어 실습 <a002> 이중 for 문을 이용한 다양한 모양 출력하기 (x모양) (0) | 2020.10.12 |
댓글