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
'C, C++ > 열혈 C 프로그래밍' 카테고리의 다른 글
열혈 C 17장 포인터의 포인터 (0) | 2021.09.07 |
---|---|
열혈 C 16장 다차원 배열 (0) | 2021.09.06 |
열혈 C 14장 포인터와 함수에 대한 이해 (0) | 2021.09.03 |
열혈 C 13장 포인터와 배열 함께 이해하기 (0) | 2021.09.02 |
열혈 C 12장 포인터 (0) | 2021.09.02 |