[ ] 배열 자동 크기 조절
char my_chars[] = "Hello, World!";
이렇게, 비워놓고 사용하며, 후에 나올 Null character의 글자 수만큼 자동으로 늘어난다.
▶C 스타일 코딩에서는 상수, 고정되어 있는 숫자를 표현할 때 \#define을 많이 쓴다고 한다.
고정된 상수를 #define으로 사용할 때,
자주 보는 형태가 배열에 사용하는 것이다.
후에 쓸 NUM_DAYS에 하나 하나 대입하지 않고, 위에 숫자만 수정하면 나머지는 자동으로 바뀌기 때문에 편리하다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define NUM_DAYS 365
int main()
{
char my_chars[] = "Hello, World!";
int daily_temperature[NUM_DAYS];
double stock_price_history[NUM_DAYS];
printf("%zd\n", sizeof(stock_price_history));
printf("%zd\n", sizeof(daily_temperature));
printf("%zd\n", sizeof(double) * NUM_DAYS);
printf("%zd\n", sizeof(stock_price_history[0]));
}
여기서, 재미있게 보던 부분은 요 부분이다.
printf("%zd\n", sizeof(stock_price_history));
printf("%zd\n", sizeof(double) * NUM_DAYS);
- 둘의 생김새는 다르지만, 결과 값은 똑같이 나온다. 한 번 하나 하나 파헤쳐 보자.
sizeof(double)와 배열의 개수를 의미하는 NUM DAYS를 곱한다. 라는 의미다.
double의 타입 크기는 8바이트 그리고 NUM_DAYS는 365이다.
둘이 곱하면, 2920이다.
배열 예시 1)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define NUM_DAYS 365
int main()
{
int my_number[5];
my_number[0] = 1;
my_number[1] = 3;
my_number[2] = 4;
my_number[3] = 2;
my_number[4] = 1024;
scanf("%d", my_number);
printf("%d\n", my_number[0]);
printf("%d\n", my_number[1]);
printf("%d\n", my_number[2]);
printf("%d\n", my_number[3]);
printf("%d\n", my_number[4]);
}
배열의 순서는 인간처럼 순서를 1 , 2, 3, 4, 5 이런 식으로 정하는 것이 아니라,
첫 번째가 0인, 0, 1, 2, 3, 4 이렇게 센다.
scanf("%d", &(my_number[0]); // 첫 번째
scanf("%d", &my_number[0]; // 두 번째
scanf("%d", my_number[0]; // 세 번째
▶우선순위에 대해서
&(adress operator) < [0] 배열
따라서, 첫 번째처럼 안 쓰고, 두 번째처럼 써도 무방하다.
그리고, 배열 같은 경우는 이 이름 자체가 주소이기 때문에, &을 안 붙여도 제대로 작동한다.
따라서, 세 번째처럼 써도 무방하다.
컴파일 타임(Compile) 그리고 런타임(Runtime) 에러
초보자 때, 우리가 배열에서 자주 실수하는 것을 예시를 들겠다.
int my_number[5];
my_number[5] = 123;
[ ] 안에 있는 인덱스가 0 ~ 4까지 해서 5개인데, 가끔 사람들이 배열 범위에서 초과된 숫자를 집어 넣을 때가 있다.
이럴 때는 문법 오류는 아니기 때문에, 비쥬얼 스튜디오에서는 안 잡아주고, 런타임(실시간)으로 프로그램을 실행했을 때 잡아준다고 한다.
근데 강의가 5년 전 강의라 그런지 2022년 비쥬얼 스튜디오에서는 경고 정도는 해준다.
출처: 홍정모의 따라배우는 C언어
강의 외의 추가된 것들은 책 그리고 인터넷 조사해서 얻었음
'배운 것들 메모 > 따라 배우는 C언어' 카테고리의 다른 글
[홍정모의 따라하며 배우는 C언어] 6.17 for 루프를 배열과 함께 사용하기 (0) | 2024.10.20 |
---|---|
[홍정모의 따라하며 배우는 C언어] 6.15 중첩된 루프들(Nested Loof) (0) | 2024.10.20 |
[홍정모의 따라하며 배우는 C언어] 6.11 콤마 연산자 (, Comma) (0) | 2024.10.11 |
[홍정모의 따라하며 배우는 C언어] 6.10 비쥬얼 스튜디오 어셈블리 코드 확인법 (0) | 2024.10.11 |
[홍정모의 따라하며 배우는 C언어] 6.8 for 루프 소개(For Loop) (0) | 2024.10.11 |