2021.02.16.화 char형 배열 char 배열명[크기] = "문자열" ; ✔ 문자열은 문자와 문자의 조합이므로, char형 배열을 사용해 저장한다. ✔ 문자열을 대입연산자를 사용하여 위와 같이 배열에 저장하고자할 때는 반드시 선언과 동시에 초기화를 해주어야한다. ✔ 이미 선언된 배열에 문자열을 저장하고자 한다면 배열의 요소에 문자를 하나하나 저장해야한다. char str[6]; str[0] = 'a'; str[1] = 'p'; str[2] = 'p'; str[3] = 'l'; str[4] = 'e'; ✔ 문자열의 길이는 알 수 없으므로, 배열의 마지막에 null(\0, null 종단 문자)을 저장하여 문자열이 끝났음을 알린다. ✔ 즉, 배열의 크기는 문자열의 길이 +1이 되어야한다. char st..
2021.02.15.월 배열의 선언 자료형 배열명[크기]; ✔ 배열은 데이터를 연속적으로 저장하고 사용할 수 있는 방법이다. ✔ 어떤 데이터를 연속적으로 저장할 지, 그리고 몇 개의 데이터를 저장할 지를 배열 선언 시에 설정한다. int arr[5]; ✔ 위의 코드는 int형 값을 5개 저장할 수 있는 배열 arr를 선언하겠다는 의미이다. 배열의 선언과 초기화 //선언과 초기화를 함께 int arrA[5] = { 1, 2, 3, 4, 5 } //선언과 초기화를 분리 int arrB[5]; arrB[0] = 1; arrB[1] = 2; arrB[2] = 3; arrB[3] = 4; arrB[4] = 5; ✔ 변수와 마찬가디로 배열도 선언과 초기화를 함께할수도, 분리해서 따로 할 수 도 있다. ✔ 다만, 중..
2021.02.15.월 재귀 호출 함수 void hi(){ printf("hi\n"); hi(); } ✔ 함수는 일반적으로 main함수 내부에서 호출되어 사용된다. ✔ 재귀 호출 함수는 함수가 스스로 자기 자신을 호출해서 사용하는 함수를 말한다. ✔ 위와 같이 hi() 함수의 내부에서 hi()가 한번 더 호출되는 경우가 재귀 호출 함수이다. hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi.... ✔ 함수는 호출될 때마다 stack영역에 쌓이고 종료 조건이 없는 재귀 함수는 stack overflow가 발생한다. ✔ 즉, 재귀 함수는 종료 조건을 설정하지 않으면 결국 메모리의 한계에 봉착하며 프로그램이 강..
1562. int 형 정수 두 개를 입력 받아 그 중 작은 값을 출력하시오. 단, 함수형 문제이므로 함수 min()만 작성하여 제출하시오. 입력. 123 출력. 456 //함수 부분 int min(int n, int m){ if(n>m) {return m;} else {return n;} } //전체 코드 #include int n, m; int min(int n, int m){ if(n>m) {return m;} else {return n;} } int main() { scanf("%d%d", &n, &m); printf("%d\n", min(n, m)); }
1053. 1(true, 참) 또는 0(false, 거짓) 이 입력되었을 때 반대로 출력하는 프로그램을 작성해보자. 입력. 1 출력. 0 #include int main(void) { int a; scanf("%d",&a); printf("%d\n",!a); return 0; } 1054. 두 개의 참(1) 또는 거짓(0)이 입력될 때, 모두 참일 때에만 참(1)을 출력하는 프로그램을 작성해보자. 입력. 1 1 출력. 1 #include int main(void) { int a,b; scanf("%d %d",&a,&b); if(a&&b){ printf("1\n"); }else{ printf("0\n"); } return 0; } 1055. 두 개의 참(1) 또는 거짓(0)이 입력될 때, 하나라도 참이면 ..
8-9. 파일 쓰기/파일 읽기 힙 오버플로우와 스택 오버플로우 ✔ heap 영역에서는 malloc()에 의해 메모리가 할당될수록, 점점 사용하는 메모리가 아래로 늘어난다. ✔ stack 영역에서는 함수가 호출될수록, 점점 사용하는 메모리가 위로 늘어난다. ✔ 어느 순간 제한된 메모리 내에서 기존의 값을 서로 침범하는 상황이 발생할 수도 있다. ✔ 이런 상황을 힙 오버플로우 또는 스택 오버플로우라고 말한다. ✔ 컴퓨터가 너무 많은 메모리를 사용하면 파일이나 사진이 열리지 않거나 화면이 정지하거나 하는 상황이 발생한다. ✔ 이런 상황은 버퍼 오버플로우라고 한다. 배열의 이름과 포인터 #include int main(void){ char *str = NULL; scanf("%s",str2); printf("%..
7. 메모리 교환, 스택, 힙 heap과 stack machine code ✔ 프로그램 시작 → 메모리 가장 위에 머신 코드가 올라간다. globals ✔ 프로그램이 사용하는 전역변수나 값은 machine code의 바로 아래 공간을 사용한다. heap ↓ ✔ malloc() 호출 시, heap에서 메모리를 가져와 할당받는다. ✔ 위에서 아래로 쌓인다. ↑ stack ✔ 함수를 호출할 때마다, 함수의 인자와 지역변수는 stack 공간에 위치한다. ✔ 호출된 함수는 명령문을 모두 실행하면 함수를 다시 호출하지 않는 이상 작동하지 않는다. ✔ stack은 메모리의 가장 아래 영역에 위치한다 ✔ 아래에서 위로 쌓인다 stack #include void swap(int a, int b); int main(voi..
2021.02.10.수 함수 정의 반환값자료형 함수명(매개변수) { 명령문; return 값; } ✔ 어떠한 기능을 수행하기 위한 특정 용도의 코드를 한 곳에 모아놓은 것으로 main함수 바깥에 정의한다. ✔ 반환값자료형 : 최종적으로 함수가 return할 값의 자료형을 넣어준다. ✔ 함수명 : 함수의 기능에 기반하여 함수명을 정한다. ✔ 매개변수 : 함수가 실행되기 위해 필요한 값과 자료형을 미리 선언하고, 필요한 값을 받아올 수 있다. ✔ 명령문 : 함수의 기능을 수행하기 위한 코드 ✔ return 값 : 최종적으로 함수가 return하는 값 int sum(int a, int b){ int result=a+b; return result; } ✔ 정수 a와 b의 합을 구하는 함수는 위와 같다. ✔ 반환..
2021.02.09.화 for문 for(초기식; 조건식; 증감식) { 명령문; } ✔ 초기식 : for문 내부에서 사용할 변수를 선언 및 초기화 ✔ 조건식 : 조건이 참(true)인 경우 for문 내부의 명령문이 실행 ✔ 증감식 : 명령문이 실행된 후, 증감식이 진행 ✔ 하나의 for문에서 여러 변수를 사용할 수 있는데, 필요하다면 조건식과 증감식도 추가할 수 있다. [참고 링크] C언어 코딩 도장 ✔ 초기식, 조건식, 변화식을 모두 생략하면 무한루프가 가능하다 (예) for(;;) {명령문;} ✔ for문 내부에서 초기식을 선언과 초기화를 함께 하는 것은 C99 방식 (GCC는 C99가 기본 설정이 아니므로 에러 발생) ✔ for문 외부에서 초기식을 선언하는 것은 C99 이전의 방식 ✔ 컴파일 방식에 ..