본문 바로가기

C언어/예습

[C언어 예습]DAY8_배열, 문자열

배열

: 저장공간들이 나열되어 있는 형태

 

저장공간 4개 => 4칸짜리 배열을 한번 선언

 

- 배열의 선언

     자료형 배열명 [길이] = {값1, 값2, ...};

     자료형 배열명 [] = {값1, 값2, ...};

     자료형 배열명 [길이];

 

- index : 저장공간의 방번호(0부터 시작)

값       1 2

index   0 1

배열명[index]

배열명[0] == 1

배열명[1] == 2

 


#include <stdio.h>
#define arDataSIZE 3

void main(){
	int arData[arDataSIZE] = { 1, 2, 3 };
	//int length = sizeof(arData) / sizeof(int);
	//4*3 = 12
	//printf("%p\n", arData);
	//printf("%p\n", arData + 1);
	//printf("%p\n\n", arData + 2); 

	//printf("%p\n", &arData[0]);
	//printf("%p\n", &arData[1]);
	//printf("%p\n", &arData[2]);

	for (int i = 0; i < arDataSIZE; i++) {
		//printf("%d\n", *(arData + i));
		printf("%d\n", arData[i]);
	}
}

 

#define arDataSIZE _ : 포인터 상수 (상수이므로 변할 수 x)


#include <stdio.h>
#define arDataSIZE 5
#define arAlphaSIZE 5

void main() {
	//int arData[arDataSIZE] = { 0 , };
	char arAlpha[arAlphaSIZE] = {' ', };
	//arData[0] = 1;
	//arData[1] = 2;
	//arData[2] = 3;
	//arData[3] = 4;
	//arData[4] = 5;

		//for (int i = 0; i < arDataSIZE; i++) {
		//	arData[i] = i + 1;
		//}
		//for (int i = 0; i < arDataSIZE; i++) {
		//	printf("%d\n", arData[i]);
		//}
	
		//for (int i = 0; i < arDataSIZE; i++) {
		//	arData[i] = 5 - i ;
		//}
		//for (int i = 0; i < arDataSIZE; i++) {
		//	printf("%d\n", arData[i]);
		//}

	//A~E까지 순서대로 값 넣기(for문 사용)
	for (int i = 0; i < arAlphaSIZE; i++) {
		arAlpha[i] = (char)(65 + i);
	}
	for (int i = 0; i < arAlphaSIZE; i++ ) {
		printf("%c\n", arAlpha[i]);
	}
}

문자열

: 문자 배열 (선언시 초기화만 가능) ***널문자를 포함해서 길이를 줘야 한다!***

 

- NULL과 널문자

    NULL : 포인터를 초기화 할 때 사용

    널문자 : '\0' , 배열의 끝을 알려주는 문자

 

#

 

string.h

strcpy_s(배열명, sizeof(배열명), 값); 저장소의 주소 x, 저장소의 값만! 바꿔주기 위해서 사용.

strlen(배열명); : 널문자를 제외한 데이터의 길이

strcmp(값1, 값2); : 값이 같으면 전체를 0으로 보자


#include <stdio.h>
#include <string.h>

void main() {
	char word[6] = "korea";
	//word = "japan"; 오류
	
	strcpy_s(word, sizeof(word), "japan");
	printf("%s\n", word);
	printf("%d\n", strlen(word));

	if (!strcmp(word, "japan")) {
		printf("두 문자열은 같습니다.\n");
	}
}

 

strcmp(값1, 값2) : 두 값의 크기를 비교하는 것.

두 값이 같으면 전체를 0으로 표현한다.

 

1이 참이므로 !strcmp(word, "japan") = 1 참일 경우 프린트해라.


복습하면서 다시 들어야할 부분

 

- 포인터란 무엇인가?

주소값을 저장한 공간.

(변수 : 값을 저장한 공간)

 

- %p

 p는 pointer

 

- sizeof

size를 알려주는 것