6.16 배열과 런타임 에러

공기훈·2021년 9월 10일
0

홍정모의 따배씨

목록 보기
40/49
	char my_chars[] = "Hello, World!";

	int daily_temperature[NUM_DAYS];
	double stock_prices_history[NUM_DAYS];

	printf("%zd\n", sizeof(stock_prices_history));		// 2920
	printf("%zd\n", sizeof(double) * NUM_DAYS);			// 2920
	printf("%zd\n", sizeof(stock_prices_history[0]));	// 8

배열

	int my_numbers[5];

	my_numbers[0] = 1;		// 방의 개념이다. 0번째, 1번째, ... 방이라고 생각하면 좋을 것 같다.
	my_numbers[1] = 2;
	my_numbers[2] = 4;
	my_numbers[3] = 2;
	my_numbers[4] = 1024;

	printf("%d\n", my_numbers[0]);
	printf("%d\n", my_numbers[1]);
	printf("%d\n", my_numbers[2]);
	printf("%d\n", my_numbers[3]);
	printf("%d\n", my_numbers[4]);
    
	scanf("%d", &my_numbers[0]);

이런 식으로 몇 번째 방에 어떤 수를 넣는지의 개념으로 생각하면 될 것 같다.
scanf는 저런 식으로 사용하면 된다.

scanf("%d", &my_numbers[0]);scanf("%d", my_numbers);처럼 사용될 수 있다. 배열은 배열 자체로 이미 주소이므로 ampersand를 굳이 붙일 필요가 없다.

	/* Runtime Error */
	my_numbers[5] = 123; // out of bound. Runtime Error

	my_numbers = 7; // compile error

my_numbers[5]는 존재할 수 없는 주소이므로 runtime error가 생기게 된다.

profile
be a coding master

0개의 댓글