본문 바로가기

깨알 c언어13

깨알 c언어 특강 01 ~ 03 01. printf 출력순서 02. ++가 연속으로 있을 때 처리 03. fork 01. printf 출력순서 ㅁ 개떡같은 문제. 이런 문제 나오면 다 틀림. - 너무 깊게 안봐도 됨. 컴파일러마다 다르다. - (9개월 전) 이런 문제는 아마 출제되지 않을 거에요. - 5, 7, 7, 9 틀린 답이다. 왜냐, printf는 뒤에서부터 연산을 시작해서. - 4번째 ++i 그런데 연산만 먼저하고 출력은 안함. 이 시점에서 i는 6. 맨 마지막 ++i가 6으로 확정되지 않음. 최종적으로 i값을 참조. - 3번째 i++ 후위 증감식은 지금 현재 i값을 참조함. 6값 출력. 이 시점에서 i는 7 - 2번째 ++i 연산만 먼저하고 출력은 안함. 이 시점에서 i는 8. - 1번째 i++ 8값 출력. 이 시점에서 i는.. 2024. 3. 11.
깨알 c언어 ch.56 ~ 60 56. 재귀함수(4) 57. 재귀함수(5) 58. 중복 재귀함수(1) 59. 중복 재귀함수(2) 60. 중복 재귀함수(3) 56. 재귀함수(4) ㅁ 문제 - my(5, 14) i = 5, j = 14 i = 4가 됨. j는 13이 됨. 2024. 3. 11.
깨알 c언어 ch.51 ~ 55 51. STATIC 변수(3) 52. STATIC 변수(4) 53. 재귀함수(1) 54. 재귀함수(2) 55. 재귀함수(3) 51. STATIC 변수(3) ㅁ 문제 - 출력결과 F1 = 2, F2 = 6, F3 = 2, F4 = 3 52. STATIC 변수(4) ㅁ 문제 - 첫번째 func() a는 101이 됨. b는 201이 됨. 전역변수 c는 30에서 101이 됨. - 두번째 func() a는 102가 됨. b는 201이 됨. 전역변수 c는 101에서 102가 됨. - 출력 a= 10, b=20, c=102 - static이 선언된 함수는 func에서 선언이 되었다. static한 a는 func에서만 사용할 수 있다. main함수는 func의 a를 사용할 수 없다. 정적변수는 지역변수와 전역변수의 특.. 2024. 3. 11.
깨알 c언어 ch.46 ~ 50 46. 함수에 주소전달(6) 47. 함수에 주소전달(7) 48. 함수에 주소전달(8) 49. STATIC 변수(1) 50. STATIC 변수(2) 46. 함수에 주소전달(6) ㅁ 문제 - func 함수 포인터변수 a는 main a의 주소값 100번지가 들어감. 변수 b는 20 포인터변수 c는 main 배열 c의 주소값 300번지가 들어감 x는 func의 포인터변수 a의 실제값이 들어감. 20. 100번지의 실제값이 20에서 20이 됨. 그리고 x는 21이 됨. x는 20이 됨. b는 21이 됨. 300번지의 실제값이 20에서 19가 됨. 함수종료. func의 a, b, c, x 다 사라짐. - a=20, b=20, c=19 - --(*c) 괄호니까 먼저 처리. c의 값. - return 0; 은 0을 리.. 2024. 3. 10.
깨알 c언어 ch.41 ~ 45 41. 함수에 주소전달(2) 42. 함수에 주소전달(3) 43. 함수가 주소를 리턴 44. 함수에 주소전달(4) 45. 함수에 주소전달(5) 41. 함수에 주소전달(2) ㅁ 문제 - 각각의 함수 안에 변수들이 있음. 지역변수가 각각. - main에 a=5, b=3, c=0 a의 주소값 100, b의 주소값 200, c의 주소값 300 - b=foo(a, &c); 함수 foo의 지역변수 a = 5, b = 300번지 c 선언 b의 실제값을 6으로 바꿈. => main의 c 값이 6이 됨. c=4 리턴 4. main의 지역변수가 a=5, b=4, c=6이 됨. - c=foo(b, &a); 함수 foo의 지역변수 a = 4, b = 100번지 (a에는 4라는 값이 들어가게 되는거고 b라는 공간엔 100이라는 .. 2024. 3. 10.
깨알 c언어 ch.36 ~ 40 36. 배열포인터 37. 함수 38. 함수와 반복문 39. 함수에 주소전달(1) 40. 함수와 변수의 유효범위 36. 배열포인터 ㅁ 22년 1월 25일 기준, 배열포인터는 딱 1문제 출제되었음. 나온다면 극강의 난이도. ㅁ 배열포인터 - 포인터인데 배열이다. 근데 자기가 가지고 있는 개수로 다시 잘라서 재조합 함. - 배열의 시작 주소값을 저장할 수 있는 포인터 2차원 배열의 구조 - 하나의 포인터다. ㅁ - int (*in)[2]; 배열포인터를 선언할땐 이런식으로 선언. in이라는 포인터를 만들건데 2개씩 자른다. 그리고 2차원행렬 형태로 만들어버림. - 2차원 배열은 행 대표주소가 있음. 0행의 행 대표주소는 100번지다. - in의 값은 0행의 대표주소를 가리키고 있다. ㅁ - **( in+1 ) .. 2024. 3. 9.
깨알 c언어 ch.31 ~ 35 31. 포인터 배열(1) 32. 포인터 배열(2) 33. 포인터 배열(3) 34. 포인터 배열(4) 35. 구조체 31. 포인터 배열(1) ㅁ 포인터 배열 - 포인터 변수인데 배열화 시킨 것. - 배열 형태인데 그 배열의 각각의 요소에 주소값이 들어가는 것. - 배열의 요소가 포인터(메모리주소)로 이루어진 것. char a[3]; 2024. 3. 8.
깨알 c언어 ch.26 ~ 30 26. 배열과 포인터(2) 27. 배열과 포인터(3) 28. 배열과 포인터(4) 29. 2차원 배열과 포인터(1) 30. 2차원 배열과 포인터(2) 26. 배열과 포인터(2) ㅁ 배열과 포인터의 관계 (포인터도 배열처럼 사용할 수 있다!) - int a[5]; int *b=a; a[2] = 10; b[2] = 20; a[0] a[1] a[2] a[3] a[4] 10이 대입됐다가 20이 대입됨. (같은 주소값을 가지고 있으므로) a는 100번지임. 그래서 b 2024. 3. 8.
깨알 c언어 ch.21 ~ 25 21. 배열(1) 22. 배열(2) 23. 포인터 24. scanf와 변수 25. 배열과 포인터(1) 21. 배열(1) ㅁ 배열의 정의 - 배열이란 같은 자료형을 가진 연속된 메모리 공간으로 이루어진 자료구조. - 배열이란 같은 자료형의 변수를 연속적으로 묶어 놓은 저장공간. - 변수라는 건 자료형(크기)이 있음. char는 1바이트, int는 4바이트. 같은 크기의 변수들 연속적으로 묶어놓은 거. ㅁ 배열의 종류 - 1차원 배열. int array[5] (1차원 배열은 1개의 행을 가진 배열이다) - 2차원 배열. int array[4][3] (4행 3열) (행과 열로 이루어져 있으면 2차원 배열) (개수는 12개) - 3차원 배열. int array[2][3][4] (2면 3행 4열) ㅁ 배열은 0부.. 2024. 2. 22.
깨알 c언어 ch.16 ~ 20 16. while문 17. do~while, for, while 18. while, if문 19. for, continue, break 20. 다중 for문, continue, break 16. while문 ㅁ while 구조 - while (조건) { 수행하는 작업들 } ㅁ 문제 출력결과. i = : 0 i = : 1 i = : 2 sum = : 3 ㅁ 문제 count가 2일 때, sum = 2, count는 4가 됨. count가 4일 때, sum = 6, count는 6이 됨. count가 6일 때, sum = 12, count는 8이 됨. count가 8일 때, sum = 20, count는 10이 됨. count가 10일 때, sum = 30, count는 12가 됨. 출력결과. 30 17. d.. 2024. 2. 22.
깨알 c언어 ch.11 ~ 15 11. 진법변환, 비트연산 12. 매크로, 비트연산 13. 삼항 연산자 14. if문, switch문 15. 반복문, for문 11. 진법변환, 비트연산 ㅁ 진법 변환이 왜 필요하냐. 우리는 0~9까지 표현하는 10진수를 쓰고 있음. 컴퓨터는 1과 0밖에 모름. 16진수나 8진수는 주소체계. 렘(주기억장치)의 주소체계가 8진수나 16진수로 되어 있기 때문이다. ㅁ 어떤 값을 대입할 때 8진수면 앞에 0을 붙임. 어떤 값을 대입할 때 16진수면 앞에 0x를 붙임. ㅁ 8진수라는건 0~7까지 표현하는거. 그래서 3자리씩 끊음. 4 + 2 + 1 = 7 (1) 5&3 0101 0011 = 0001(이진수) 1(십진수) (2) 5I3 0101 0011 = 0111(이진수) 7(십진수) (3) 5^3 >) - 비.. 2024. 2. 22.
깨알 c언어 ch.6 ~ 10 06. 연산자 우선순위 07. 관계/논리연산자, 조건문 08. 논리연산자, 증감연산 09. 산술연산자 10. 출력형식 06. 연산자 우선순위 ㅁ 연산자 우선순위(자바나 c나 같음) - 괄호, 단항, 곱하기나누기, 더하기빼기, ~~~~, 논리연산자(&&, II), 대입연산자 ㅁ 연산자 우선순위 예시 - Int a=3, b=4, c=5, d=6; (1) a*b+c >= d && d/a-b != 0 = 왼쪽: 17 >= 6 여기서 >= 비교연산자임. 17이 6이상이냐. 맞으므로 1이 됨. 오른쪽: 2-4 != 0 여기서 -2와 0이 같지 않으니 참임. 1. 답은 1이 된다. (2) d%b + ++a*c-- = 2 + 20이므로 22. 6 나누기 4는 몫은 1이고 나머지는 2다. ㅁ 아래 c프로그램의 출력은? .. 2024. 2. 21.
깨알 c언어 ch.1 ~ 5 01. 프로그래밍이란? 02. 컴파일러 & 인터프리터 03. 변수 04. 변수의 종류와 유효범위 05. 산술연산자 01. 프로그래밍이란? ㅁ 프로그램 동작 과정 선언 -> 입력 -> 처리 -> 출력 - 모든 프로그램이 똑같은 과정을 거친다. ㅁ scanf("%d%d", &age1, &age2); - scanf: 입력을 받는 함수 - %d%d: 정수 2개를 받겠다. - age1, age2: 라는 공간에 값을 집어 넣겠다. ㅁ 변수 선언 - 입력받기 위한 공간을 만드는 것. 02. 컴파일러 & 인터프리터 - 두 개가 하는 역할은 같다. - 컴퓨터는 0과 1만 안다. 그래서 컴퓨터가 알아들을 수 있게 번역해 주는 것. - 컴파일: 인간이 만든 고급언어를 컴퓨터가 해설할 수 있는 저급언어로 번역. - 컴파일러든.. 2024. 2. 21.