728x90
728x90
11.1.2.3.4

 

11.1 배열

둘 이상의 변수를 동시에 선언하는 효과
많은 양의 데이터를 일괄 처리할 때 유용 (for 등)
지역/전역적 특성 - 함수 호출 vs 프로그램 종료 전까지 메모리공간에..

선언에 필요한 것 : 길이/요소자료형/이름
길이 : 변수의개수 (상수)
요소자료형 : 배열을 구성하는 변수의 자료형
이름 : 접근할 때 사용되는 이름

배열요소의 위치 : 인덱스 연산자 [ ] (정수)로 입력
인덱스는 0부터 시작하며 거리를 나타냄

int arr3[5] = {1,2}; //나머지는 0으로 채워진다.



문자열 상수 : 문자열이면서 상수의 특징.

-문자열선언(메모리, 함수호출 순서로 진행

printf("hello \n");



문자열 변수 : 문자열이면서 변수의 특징.

char str1[5] = "Good";
char str2[] = "morning"; // 지정되어 있지않으면 문자열의 길이 +1만큼 컴파일러에의해 채워진다.
// 문자열배열

 

문자열의 특징 

- 어떤 문자열이든 무조건 끝에 null문자를 지닌다.
-- 문자열의 실제길이 + 1 로 메모리공간을 할당하고 큰 길이가 저장되는 이유

- null 문자 : '\0'
-- 아스키코드값으로 0
--- 문자열의 끝을 나타내는 특수문자, 다른용도로도 쓰임
-- 0의 아스키코드값은 49, 즉 0이 null이 아니다

char str[6] = "Hello";

 

- null 문자를 지녀야 하는 이유

-- 문자열의 끝을 표현하기 위해서 
-- 표현해야 하는 이유 : 쓰레기 값과 실제 문자열의 경계를 나타내기 위해
-- printf 함수는 null 문자를 통해 출력범위를 결정

char str[100] = "Hello World";
printf("%s \n", str);

// 아래 경우도 null문자를 만났기 때문에 AB만 출력
char str[5] = "AB";
// AB\0??...
printf("hello \n");
// hello\n\0

 

문자열과 char 배열의 차이

char arr1[] =  "abc"; 
// 메모리공간 3+1 할당
// char 배열이자 문자열

char arr2[] =  {'a', 'b', 'c'};
// 길이가 3인 배열
// 문자열이 아니다. 끝에 null문자가 없어서

char arr3[] =  {'a', 'b', 'c', '\0'};
// 길이가 4인 배열
// 문자열이다. 끝에 null문자가 있어서
// char 배열이자 문자열

 

null문자는 반드시 끝이지 앞에 있으면 안된다.

 

문자열 변수임을 입증하는 예제

#include <stdio.h>
 
int main(void) 
{
	int i;
	char ch;
	char str[6] = "Hello";

	printf("--변경 전 문자열--\n");
	printf("%s \n", str);

	for(i=0; i<6; i++)
		printf("%c | ", str[i]);

	//문자열 변경
	for(i=0; i<3; i++)
	{
		ch = str[4-i]; //null문자는 건들지 않음
		str[4-i] = str[i];
		str[i] = ch;
	}

	printf("\n\n--변경 후 문자열--\n");
	printf("%s\n", str);
	
	return 0;
}

#include <stdio.h>

// abcd 입력
int main(void) 
{
	char str[30];
	printf("문자열 입력 :");
	scanf("%s", str); // &를 안붙이는건 다음 포인터단원에서 나옴

	printf("입력된 문자열 : %s \n", str);
	
	return 0;
}

 

728x90
728x90
블로그 이미지

coding-restaurant

코딩 맛집에 방문해주셔서 감사합니다.

,

v