전체 글 (110) 썸네일형 리스트형 심화 C 언어 8 (함께 만드는 코딩 #1 - MBTI 성격검사 테스트) 성향 : 내향 / 외향이냐에 따라 I / E 인식 : 감각 / 직관이냐에 따라 S / N 근거 : 사고 / 감성이냐에 따라 T / F 양식 : 판단 / 인식이냐에 따라 J / P 이 네 가지 카테고리에서 하나씩 선택하여 16가지 배리에이션을 만드는 것이 MBTI 어떤 문항을 입력하고 해당 문항에 수치를 입력해서 해당 문항에 긍정지수 부정지수 수치에 따라서 내향성인지 외향성인지 등등을 단순히 점수제로 단순히 덧셈 뺄셈해서 나오는 최종적인 결과를 가지고 판단하면 된다 총 4가지 변수 (1) MBTI 검사지의 원리 - 성향 내향성 : I 외향성 : E int score_I_E = 0;으로 상정 값이 음수라면 I, 양수라면 E (2) MBTI 검사지의 원리 - 인식 주변을 인식하는 방법(인식)이 감각인지 직관인.. 심화 C 언어 7 (매크로 - C/C++의 독특한 매력) 전처리기 # 전처리는 모두 #으로 시작한다 #include 또한 #으로 시작하기 때문에 전처리 즉 매크로 #define_CRT_SECURE_NO_WARNINGS 구문도 마찬가지 #으로 시작했기 때문에 전처리 이다 #include #include 전처리기는 소스코드의 텍스트를 그대로 복사해서 붙여넣는 전처리기다 이를 통해 C/C++ 는 함수의 선언이 존재함을 이해할 수 있고 이를 통해 우리가 만들어두지 않은 함수들인 printf 나 scanf 등을 활용할 수 있다 #define #define 전처리는 적당한 규칙으로 소스코드를 교체할 수 있으며, 이를 통해 프로그래머가 상수를 지정할 수 있고, 매크로 함수 또한 지정할 수 있다 정확히 알아둬야 할 것은 #define으로 만들어진 매크로 함수는 실제로 함수의.. 심화 C 언어 7 (포인터 - 포인터의 포인터, 함수의 파라미터의 포인터) 0-value, nullptr : 포인터는 nullptr 이라는 값으로 0-value가 지정가능하다 0-value 란 각각의 변수가 가질 수 있는 무(zero) 값, 기본값, 최초값 등을 의미한다 0-value 에는 널문자, 0, false, nullptr 등이 있다 포인터도 역시 0-value를 가질 수 있으며 포인터에서의 0-value는 nullptr 이다 포인터에는 어떤 주소값이 들어가는데 이 주소값이 처음에는 초기화되지 않은 주소값을 가리키게 됨 이를 우리는 쓰레기 주소값이라고 함 포인터 변수를 만들게되면 이 변수의 값이 무슨 값이 들어있는지 프로그래머는 예측을 할 수가 없다 그래서 변수를 만들고 나서 0 value로 초기화를 해 줘야함 #include #include int main() { in.. 심화 C 언어 6 (포인터 3 - 메모리 동적할당 / 배열) 포인터와 배열 : 배열 변수명에는 '배열' 이라는 의미보다 '포인터' 라는 의미를 갖고 있다 배열 변수명의 의미 : 정확히 말하자면 다르지만 배열 변수명은 '포인터' 라고 볼 수 있다. 배열 인덱스를 집어넣어 값을 가져오는 [] 대괄호는 해당 주소값에서 몇번째 뒤쪽의 값을 가져오느냐 라는 의미를 갖고있다 배열도 근본은 포인터랑 같다 #include "prc.hpp" int main(){ int myArray[100]; // myArray 부분은 주소를 갖고있다 int* pMyArray = myArray; // pMyArray 라는 배열 변수에 주소를 집어넣어 줄 수가 있다 pMyArray[0] = 100; pMyArray[1] = 200; pMyArray[2] = 300; printf("%d\n", my.. 심화 C 언어 5 (포인터 2 - 포인터를 쓰는 이유) 값을 서로 뒤바꿔야 하는 함수인 swap 이라는 함수 포인터가 없는 상태로는 값을 서로 뒤바꿀수가 없다 방법 1 #include "prc.hpp" void swap (int* a, int* b) { int temp; temp = *a; *a = *b; *b = temp; } int main(){ int v1 = 100; int v2 = 200; swap(&v1, &v2); printf("v1 : %d\nv2 : %d\n", v1, v2); return 0; } 방법 2 #include "prc.hpp" void swap (int& a, int& b) { //int의 reference 타입, 변수 그 자체를 가져온다 생각 int temp; temp = a; a = b; b = temp; } int main.. 심화 C 언어 4 (포인터 1 - 기초) 변수의 3요소 변수의 이름 : (프로그래머가 필요로 하는 이름) 변수의 주소 : (컴퓨터가 필요로 하는 이름) 변수의 값 : 변수가 담고 있는 값 이름과 주소 : 프로그래머는 '변수의 이름'을 이용해 변수를 구분하지만 컴퓨터 (기계)는 '변수의 주소'를 이용해 변수를 구분한다 즉, 변수의 주소는 컴퓨터에게 있어서의 변수명 포인터 C/C++ 에서는 이 컴퓨터 (기계)에게 적용되는 변수명인 '주소' 라는 것을 직접적으로 조작할 수 있는 포인터 라는 '방법'을 제공하는데 이 주소를 조작하는 것을 '포인터를 이용한다'라고 한다. 포인터 데이터 타입 : 모든 기본형 데이터 타입 포함 사용자 정의 데이터 타입 바로 오른쪽에 *(애스터리스크)를 붙여주게 되면 해당 데이터타입의 포인터 타입이 만들어지게 된다 int*m.. 심화 C 언어 3 (문자열 - 문자의 '배열') 문자열 : 문자의 배열이라는 뜻, 문자 여러개가 나열된 형태 일반적으로 두가지 방법을 사용한다 첫번째 방법 : char string[100]; 두번째 방법 : const char*string; 문자열 선언 방법 char mystring[100]; const char*mystr; // 포인터로 선언 #define _CRT_SECURE_NO_WARNINGS : 가장 윗줄에 선언하게 되면 scanf를 사용할 수 있게 된다. 지금부터 scanf_s를 활용하지 않고 scanf를 사용한다. 선언하지 않으면 문자열 관련 함수 사용에도 제약이 있다. 특히 scanf와 scanf_s 두 함수는 문자열을 다루는 방법에 차이가 있으므로 앞으로는 scanf로 통일하여 사용한다. #include : 문자열 관련 함수의 선언을 .. 심화 C 언어 2 (각종 변수형 - 모든 코딩에서 찾아볼 수 있는 '기본 자료형') bool : 1 byte (8bit) 참 거짓을 판단 (true / false), 정수형 char : 1 byte (8bit) ~128 ~127 숫자를 저장 숫자 형태로 출력하고 싶다면 %d 문자 형태로 출력하고 싶다면 %c 대부분의 문자 / 문자열을 저장하는데 유용하게 사용 #include int main() { char c = 'a'; // ' (작은 따옴표)를 이용해서 문자 한 개를 엮어주게 되면 아스키 테이블에 있는 이 숫자로 치환이 돼서 변수에 들어가게 되고 그 값이 %c를 만나서 문자 형태로 출력이 된다 printf("%d\n", c); return 0; } 출력값 97 #include int main() { if (97 == 'a'){ printf ("97은 'a' 입니다."); } retu.. 이전 1 ··· 10 11 12 13 14 다음