[C] C언어 기초 16

[C] C언어의 포인터 및 메모리_3

[C] C언어의 포인터 및 메모리 포스팅에서 메모리 관련 연산자는 두 가지가 있다고 언급했습니다. [ 메모리 관련 연산자 ] 1. & : 주소 연산자 2. * : 포인터 연산자 이번 포스팅에서는 포인터 연산자의 기초 사용법에 대해 알아보겠습니다. 포인터 변수는 말 그대로 변수입니다. 하지만, 주소만을 담을 수 있기 때문에 포인터 변수라고 부릅니다. [ 포인터 연산자( * )의 사용법_1 ] 포인터 연산자인 * 을 사용하여 포인터 변수를 선언할 수 있습니다. ex) int * p; // int형의 포인터 변수 p를 선언 하지만, 변수에서의 자료형과는 차이가 있습니다. 위 예시에서의 자료형 int는 포인터 변수 자체의 자료형이 아닙니다. 포인터가 가리키고 있는 변수의 자료형을 뜻합니다. int a = 10;..

[C] C언어 기초 2022.04.09

[C] C언어의 포인터 및 메모리_2

[C] C언어의 포인터 및 메모리 포스팅에서 배열의 주소와 그 배열의 첫 번째 index의 주소는 "같다"라고 말했습니다. 예시 코드로 알아보겠습니다. 아래 예시에서 길이가 3인 int형의 배열 a를 선언하는 동시에 a[0]은 10, a[1]은 20, a[2]는 30으로 초기화했습니다. 주소 연산자인 &를 사용해서 a[0], a[1], a[2]의 주소값을 불러왔습니다. 위 코드의 실행 결과는 아래와 같습니다. 메모리는 우리가 정하는 것이 아닌 컴퓨터가 자동으로 정해주는 것이기 때문에 아래에서의 주소값은 항상 바뀝니다. 주소값을 형식 문자(서식 지정자)를 사용하여 정수형으로 받았기 때문에 음수가 나올수도, 양수가 나올 수도 있습니다. 저희가 주목해야 할 것은 두 가지입니다. 첫 번째는 a[0], a[1],..

[C] C언어 기초 2022.04.08

[C] C언어의 포인터 및 메모리

포인터에 대해 알아보기 전, [C] C언어의 함수와 변수 포스팅에서 언급했던 자료형을 다시 보겠습니다. [ C언어에서의 자료형 ] - 정수 short : 2byte - 정수 int : 4byte - 실수 float : 4byte - 실수 double : 8byte - 문자 char : 1byte [ 포인터(Pointer)란? ] - C언어에서의 포인터는 "주소를 저장하는 변수"입니다. - 포인터는 "포인터 변수"라고 부릅니다. - C언어의 장점 중 하나가 바로 포인터(포인터 변수)이지만, C언어를 처음 배울 때 어려운 이유이기도 합니다. [ 포인터(Pointer) 사용 시 장점? ] - 메모리 주소를 참조해서 다양한 자료형 변수들의 접근과 조작이 용이합니다. - 메모리 주소를 참조하여 배열과 같은 연속된..

[C] C언어 기초 2022.04.07

[C] C언어 연습문제

지금까지 포스팅한 내용을 바탕으로 연습문제를 풀어보겠습니다. (문제에 대한 풀이는 아래에 있습니다.) [ 문제 1. ] 아래 그림과 같이 문자열을 입력받아서 역순으로 출력하는 프로그램을 만드시오.( scanf( ) 이용 ) [ 문제 2. ] 아래 그림과 같이 문자열을 입력받아서 선택한 문자를 변경하는 문자를 만드시오. 풀이에 앞서 제가 풀이한 내용은 "좋은 코딩"이 아닐 수 있음을 밝힙니다. 더 나은 방법이나 다른 방법이 있다면 댓글로 알려주시면 감사하겠습니다. [ 문제 1 풀이 ] //4행 : char형 배열로 크기는 넉넉하게 100 정도 잡아줬습니다. //5행 : 9행의 strlen(ch)의 크기를 저장할 int형 변수 i를 선언하였습니다. //7행 : 배열 ch에 문자열 입력을 받습니다. //9행 ..

[C] C언어 기초 2022.04.05

[C] C언어 기초 함수

이번 포스팅에서는 C언어에서 사용하는 기초 함수들에 대해 알아보겠습니다. 문자열 함수를 사용할 때는 전처리 지시자 #include 를 사용해야 합니다. [ sizeof( ) ] - 크기를 구하는 함수 (자세한 설명은 →[C] C언어의 배열(array)←포스팅으로) [ strlen( ) ] - 문자열의 길이 값을 찾아내는 함수 [ strcpy( ) ] - 문자열 복사 함수 [ strcat( ) ] - 문자열 연결 함수 [ strcmp( ) ] - 문자열 비교 함수 - 결과가 0이 나오면 비교 문자열이 같은 것이고, 0 이외의 다른 결과가 나오면 비교 문자열이 다른 것이다. [ gets( ) ] - 문자열 입력 함수 - scanf와 달리 gets()는 NULL값을 포함한다. - scanf는 공백 뒤의 문자열..

[C] C언어 기초 2022.04.04

[C] C언어의 배열(array)

배열부터는 실질적으로 프로그램을 만들 때 없어서는 안 되는 타이틀입니다. 배열이란 서로 같은 타입의 변수 여러 개를 나란히 나열한 것입니다. [ 배열의 형식 ] 자료형 배열이름 [배열 길이] ex) int array [10]; 지금까지의 포스팅에서 int형 변수 a, b, c, d를 선언하려면 int a, b, c, d; 형식으로 선언하였습니다. 이를 그림으로 나타내면 아래와 같습니다. 하지만 배열은 위 사진처럼 각각 선언하지 않고 아래 사진처럼 한 번에 선언이 가능합니다. 배열 선언은 변수 선언과 비슷합니다. int형 변수 num을 선언하려면 int num;으로 선언하듯 int형 배열 arr을 선언하려면 int arr[ ];로 선언합니다. int a[4];처럼 선언을 하였다면 int형 변수 a가 4개가..

[C] C언어 기초 2022.04.03

[C] C언어의 반복문_do ~ while

[ while문과 do~while문의 비교 ] while문은 조건이 만족하지 않으면 반복할 내용을 실행하지 않습니다. 하지만 do~while문은 "최소한 한번"은 반복할 내용을 실행합니다. while문과 for문에 비해 사용 빈도는 적지만, 위의 차이점 때문에 필요한 상황이 있습니다. [ do~while문의 형식 ] do{ 반복할 내용 } while(조건식) [C] C언어의 반복문_while문 포스팅의 예문과 같은 기능을 하는 예문입니다. while문과 같이 i

[C] C언어 기초 2022.04.02

[C] C언어의 반복문_while문

이번 포스팅에서는 while문에 대해 다루겠습니다. [ while문의 형식 ] while(조건식) { 반복할 내용 } 초깃값, 조건값, 증감값이 모두 포함되는 for문과는 다르게 while문은 조건식만을 가지고 있습니다. 초깃값을 설정할 때 for문과 다르게 while문에서는 while문 밖에서 초깃값을 설정해줘야 합니다. 증감값 또한 반복할 내용에 포함시켜주지 않으면 무한루프가 생길 수 있습니다. [C] C언어의 반복문_for문 포스팅에서 다뤘던 예문과 같은 기능을 하는 예문을 가져왔습니다. i가 5보다 작거나 같을때까지 printf("%d번째 행\n", i); 와 i++; 를 반복합니다. while문의 조건식에 1이 들어가면 "참"을 의미합니다. 즉, while(1) { 반복할 내용 }이라면 조건식이..

[C] C언어 기초 2022.04.01

[C] C언어의 반복문_for문

반복문이란 어떤 행동을 반복적으로 수행하는 문장입니다. C언어에서의 반복문은 [while문], [for문], [do ~ while문]이 있습니다. 이번 포스팅에서는 for문에 대해 알아보겠습니다. for문의 형식은 아래와 같습니다. [ for문의 형식 ] for(초깃값; 조건값; 증감값) { 조건식이 참인 동안 반복할 내용 } 초깃값은 시작값, 조건값은 끝값이라고 생각하면 편합니다. for(A; B; C)는 A일때 B가 될 때까지 C를 반복 실행하는 것입니다. 아래 예시에서는 초깃값이 i = 1, 조건값이 i

[C] C언어 기초 2022.03.31

[C] C언어의 조건문_switch문

이번 포스팅에서는 C언어의 조건문 中 하나인 switch문(switch~case문)을 알아보겠습니다. switch문은 if~else문을 보다 간결하게 표현할 수 있어서 가독성이 좋습니다. 다만 if~else문에 비해서는 약간의 제약이 있습니다. switch문 안에서의 case문은 콜론( : )으로 구분합니다. 거두절미하고 예시부터 보겠습니다. 아래의 예시에서는 변수 a가 1일 경우, 2일 경우, 3일 경우, 4일 경우를 각각 case1, case2, case3, case4로 나누어 각 문장이 출력되도록 하였습니다. 하지만 아래의 예시는 잘못된 예시입니다. 아래의 사진은 위의 예시를 실행하여 4를 입력한 결과입니다. 멀쩡히 잘 실행됩니다. 하지만, 두 번째 예시에서 1을 입력했음에도 불구하고, 모든 문장이..

[C] C언어 기초 2022.03.30