언어/C

[코딩자율학습] 10일차 배열과 문자열

홍시_코딩기록 2024. 3. 15. 00:57

📌 배열

더보기

💡 배열 형식

자료형 배열명[배열크기]

int subway_array[3]

 

(코드, 출력결과)

#include <stdio.h>

int main(void) {
	int subway_array[3];
	subway_array[0] = 30;
	subway_array[1] = 40;
	subway_array[2] = 50;

	for (int i = 0; i < 3; i++) {
		printf("지하철 %d호차에 %d명이 탐.\\n", i + 1, subway_array[i]);
	}
	return 0;
}
  • 배열의 크기는 항상 상수

 

📌 배열 초기화

#include <stdio.h>

int main(void) {
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; //배열 초기화
	for (int i = 0; i < 10; i++) {
		printf("%d\\n", arr[i]);
	}
	return 0; 
}

// 1 2 3 4 5 6 7 8 9 10 출력
  • 배열을 선언할 때 한 번에 초기화 하려면 중괄호 안에 넣음.
  • 초기화 하지 않고 int arr[10] 이렇게 선언만 하면 이상한 값이 출력 됨.

 

일부 값 초기화하기

#include <stdio.h>

int main(void) {
	int arr[10] = { 1,2 }; //일부 값 초기화
	for (int i = 0; i < 10; i++) {
		printf("%d\\n", arr[i]);
	}
	return 0; 
}

//1 2 0 0 0 0 0 0 0 0 출력
  • 일부만 초기화하면 초기화한 값은 그대로 저장되고 나머지는 모두 0으로 초기화

 


int arr[] = { 1,2}
  • 배열 크기 지정 안해도 자동으로 배열 생성 됨.

 

 

실수형 배열 초기화하기

#include <stdio.h>

int main(void) {
	float arr[5] = { 1.23, 2.34, 3.45 }; //일부 값 초기화
	for (int i = 0; i < 5; i++) {
		printf("%.1f / ", arr[i]);
	}
	return 0; 
}

// 출력 : 1.2 / 2.3 / 3.5 / 0.0 / 0.0 /
  • 실수도 마찬가지로 일부만 초기화 하면 나머지는 0

 

📌 문자열 다루기

#include <stdio.h>

int main(void) {
	char str[7] = "coding";
	printf("%s\\n", str);
	printf("%d\\n", sizeof(str));
	return 0;
}

//출력 coding
// 출력 7
  • coding은 6글자인데 왜 배열크기가 7개로 들어가는지?
    • 배열에 문자열을 저장할 때는 항상 문자열의 끝을 알리는 null 문자가 들어갈 공간을 마련
    • 그래서 sizeof로 문자열의 배열 크기를 출력해도 7이라고 나옴.
  • 문자는 ‘a’ 작은 따옴표로, 문자열은 “” 큰 따옴표로

 

배열에 한글 저장하기

#include <stdio.h>

int main(void) {
	char str[] = "로또당첨";
	printf("%s\\n", str);
	printf("%d\\n", sizeof(str));
	return 0;
}

//출력 로또당첨
// 9
  • 로또당첨은 왜 또 9개로 나오는지?
    • 한글은 한 글자에 2바이트를 차지함 그래서 로또당첨 * 2 + 1(null)

 

📌 문자열 깊게 다루기

#include <stdio.h>

int main(void) {
	char name[256];
	printf("이름을 말하세요");
	scanf_s("%s", name, sizeof(name));
	printf("%s", name);
	return 0;
}
  • name[256]: 어떤 문자열이 올지 모르니까 [256]으로 넉넉하게 선언
  • sizeof(): 버퍼 오버플로 문제를 방지하기 위해 sizeof로 입력크기 지정