본문 바로가기

웹_프론트_백엔드/C언어

(30)
2020.02.26 1. 2차원 배열 : 배열 안에 배열 한 번 접근해도 주소값(행) 두 번 접근해야 값(열) 2. 1차원 배열이 여러 개 필요할 때, 같은 자료형이라면 2차원 배열로 선언한다. 3. 2차원 배열 선언 자료형 배열명[][] = { { 값1, 값2, ... }, { 값3, 값4, ... }, ... }; 자료형 배열명[행][열] = { { 값1, 값2, ... }, { 값3, 값4, ... }, ... }; 자료형 배열명[행][열] = { 초기값, }; 3. *(*(arrData + 행) + 열) : arrData[행][열] 4. 문자열 배열 char arData[문자열 개수][문자열의 문자 개수] = { "", "", ... }; 문자열은 문자배열 즉, 1차원 배열이다. 따라서 여러 개의 문자열을 저장하고자..
2020.02.25 1. 문자열 : 문자 배열 문자열을 문자배열에 넣으면 각 문자가 각 방에 순서대로 들어간다. %s라는 서식문자로 배열의 시작주소를 알려주면 널문자까지 읽는다. 널문자('\0') : 문자열의 끝을 알려주는 역할 널(NULL), 0 : 포인터 초기값 2. 오늘 실습코드 1) string.c #include void main() { //const char nation[6] = "korea"; char nation[6] = "korea"; //접근해서 수정하는 것을 막아준다. //따라서 scanf_s()로 입력받을 수 없다. const char* nation2 = "japan"; //포인터자료형 앞에 const는 참조상수 //포인터명 앞에 const는 상수 const char* const nation3 = "c..
2020.02.24 1. 인덱스 번호가 0부터 시작하는 이유 : 배열명은 시작주소를 가지고 있다. 따라서 다음 칸에 접근하기 위해 포인터 연산을 한다. 배열명 + 칸수는 주소값이므로 그 안에 있는 값에 접근할 때 참조 연산자로 접근한다(*). *(배열명 + 칸수)는 그 칸에 들어있는 값이다. 첫번째 칸에 접근하고자 할 때 배열명 + 0으로 접근하기 때문에 대괄호로 치환하면 0이 시작 인덱스이다. 2. 배열의 사용 int arData[] = {3, 5, 4}; sizeof(arData) : 12 sizeof(arData) / sizeof(int) : 3 arData[0] = 10; //저장공간(대입연산자가 있기 때문에) arData[0] + 9; //값 arData[2] = arData[0] + 7; //저장공간, 값 3. ..
2020.02.21 1. 포인터(저장공간을 가리키고 있는 주소값) 포인터 변수 : 주소값을 담고 있는 저장공간 변수 : 값을 담고 있는 저장공간 포인터 상수 : 주소값을 담고 있고 수정이 불가능한 저장공간 상수 : 값을 담고 있고 수정이 불가능한 저장공간 예시) 과자를 주는 방법에는 크게 두가지로 구분 가능하다 ① 직접주기 ∴ 직접 과자를 얻는 것은 변수에 직접 접근하는 것에 해당한다 ② 간접적으로 과자가 있는 위치를 가르쳐 주기 ∴ 쪽지에 과자의 위치를 적어서 건네준다면 우리는 이 쪽지를 포인터라고 생각할 수 있다 실체(변수)인 과자의 위치를 가리키고 있기 때문이다 즉, 쪽지에 적힌 위치를 보고 과자를 가져오는 것은 포인터를 사용해서 변수에 접근하는 것에 해당한다 2. * 1) 산술 연산자 : 곱하기, 앞 뒤 모두 항이 ..
2020.02.20 1. 반복문 1) for문 2) while문 3) do~while문 do { 실행할 문장; } while(조건식); 2. 오늘 실습코드 1) quiz.c #include void main() { const char* qMsg = "Q.다음 중 프로그래밍 언어가 아닌 것은?\n"; const char* choiceMsg = "1. JAVA\n2. 파이썬\n3. C언어\n4. 망둥어\n"; int choice = 0, answer = 4; //0 이외 모든 수는 참 while (-9999){ printf("%s%s", qMsg, choiceMsg); scanf_s("%d", &choice); if (choice == answer) { printf("정답!\n"); break; } else if (choice..
2020.02.19 1. 조건문 1) if문 2) switch문 switch(변수명) { case 값1: 실행할 문장; break; case 값2: 실행할 문장; break; case 값3: 실행할 문장; break; ... default: 실행할 문장; } ** if문은 다양한 변수를 다양한 관계연산자로 비교할 때 사용하고, switch문은 하나의 변수에 여러 값이 담길 때 같은지만 비교할 때 사용한다. ** switch문은 영역이 존재하고 탈출하고 싶을 때 break를 사용하여 탈출한다 . 2. 대입 연산자(복합 대입 연산자, 누적 연산자) : +=, -=, /=, %=, ...... int money = 10000; //money = money - 1000; money -= 1000; 3. 증감연산자(++, --) i..
2020.02.18 1. 비트 연산 : 비트연산은 주로 RGB, 네트워크, 직렬화 및 역직렬화(시리얼)에 사용 1) 논리 연산자 & AND(논리곱) : 두 비트 모두 1일 때 1 | OR(논리합) : 둘 중 하나라도 1이면 1 ^ XOR(배타논리합) : 두 비트가 서로 다르면 1 2) 단항 연산자 ~ NOT(논리부정) : 0은 1로 1은 0으로 변경 ~a = -a - 1 3) 부호 비트 : 비트는 우에서 좌로 읽으며 좌측에 있는 비트가 최상위 비트 부호비트는 최상위 비트이며 0은 양수, 1은 음수이다. 4) 비트 이동(쉬프트 연산자) (RIGHT SHIFT) a >> b : a를 b만큼 우로 비트이동 ** 빈 칸은 0으로 채워지고(음수는 1) 비트가 넘어가면 자동으로 잘린다 ** 2. 조건식 : 결과가 참 또는 거짓, 둘 ..
2020.02.17 1. 형변환 1) 자동 형변환 정수 + 정수 = 정수 정수 + 실수 = 실수 예) 3 + 0.0 = 3.0 문자 + 정수 = 정수 예) 'A' + 5 = 70 2) 강제 형변환 (자료형)값 예) (double)3 == 3.0 2. 변수를 사용하는 이유 1) 반복되는 값을 쉽게 관리하기 위해서 Why? 변수를 사용하여 출력하면 변수값 한 번만 변경해주면 되기 때문에 2) 값에 의미부여를 하기 위해서 //어떤 의미로 출력했는지 알 수가 없음 printf("10"); //변수명을 통해 어떤 의미로 출력했는지 알 수 있음 int age = 10; printf("%d\n", age) 3. 입력상태 : 커서가 깜빡이고 있는 상태 4. 입력함수 : 커서를 깜빡이게 하는 기능 출력함수를 사용해서 사용자가 잘 입력할 수..
2020.02.14 1. 컴파일러 해석 방향 : 위에서 아래로 좌에서 우로 2. 제어문자 : 반드시 따옴표 안에서 작성한다. \n : new line(줄바꿈, 개행문자) \t : 위 아래 줄 맞춰 띄우기 \' : 작은 따옴표 표현 \" : 큰 따옴표 표현 \\ : \(역슬래쉬) 표현 3. 변수 : 변수는 저장공간이다 x = 0 저장공간의 대입 값(상수) 이름 연산자 4. 자료형 자료형 type byte 값 정수형 int(기본형) 4 4, 1, -231, ... 실수형 float 4 0.0F, 1.0F, -4.156F, ... double(기본형) 8 0.0, 1.0, -4.156, ... 문자형 char 1 'a', '0', 'A', ... ** 1byte 정보의 최소 단위 ** 5. 변수의 선언 초기화 자료형 변수명 = ..
2020.02.13 1. C언어 프로그램 OS(하드웨어에 적절한 전기 신호를 흘려주는 역할) 하드웨어 2. C언어는 이식성이 좋지 않지만 메모리를 효율적으로 관리하여 속도가 빠르다. 3. 컴파일 : 사람의 언어를 컴퓨터 언어로 바꿔주는 작업 ① 디버그 - 오류 검사 ② 빌드 - 실행프로그램 제작 ④ 링크 - 실행프로그램 실행 ③ 실행프로그램 4. 컴파일러(Visual c++ 2015) : 번역기 ** 안정화된 버전이란? 출시한지 꽤 기간이 지난 버전, 그리고 회사에서는 안정화된 버전을 사용함 ** ** 불안정한 버전이란 ? 최신 버전 ** ** 왜 회사에서는 안정화된 버전을 사용할까? 불안정한 버전은 새로 출시한지 얼마되지 않아 버그가 발생이 되어도 알 수가 없다. 알 수도 없고 실제로 사용했던 사용자가 많지 않기 때문에 ..