본문 바로가기

BackEnd

메모리 구조 1. 하드웨어 관점(물리적)에서의 메모리 공간 1) 메모리의 종류 하드웨어 관점에서 메모리 종류는 총 4가지이다. 하드디스크만 메모리 공간으로 존재해도 CPU는 프로그램을 실행시킬 수 있다. 하지만 속도가 느리다. 그래서 CPU와 하드디스크 사이에 RAM이라는 메모리 공간을 두면 속도가 빠르다. 하드디스크에 저장되어 있는 실행 프로그램을 램으로 이동시켜서 실행하도록 하드웨어가 디자 인 되었다. 따라서 CPU는 하드디스크가 아닌 램에 빈번한 접근을 한다. 캐쉬는 CPU내부에 존재하기 때문에 램보다 더 빠른 속도로 ALU의 접근이 가능하다. 따라서 램에서 자주 사용되는 데이터를 캐쉬로 이동시켜 ALU의 빈번한 접근을 돕게된다. 레지스터도 마찬가지로 캐쉬보다 더 빠른속도로 ALU의 접근이 가능하다. 2. 소프..
문자의 표현방법과 문자 관련 표준함수들 1. 컴퓨터의 문자 인식 및 표현 방법 c프로그램상에서 표현하는 모든 문자들은 컴파일러에 의해 숫자로 변환된다. 변환된 숫자를 cpu에 전달되기 때문에 cpu가 인식을 할 수 있는거고, cpu는 정확히 문자인지?숫자인지는 모르고, 요구하는 연산만 단순히 처리할뿐이다. 연산 결과도 숫자로 표현되는데, 이 숫자를 운영체제가 다시 문자로 변환 해준다. 즉 실행과정에서의 문자의 입출력(scanf, printf함수)은 운영체제에 의해서 처리가 된다. 그리고 이 숫자와 문자사이에서의 변환은 약속이 근거가 되야한다. c프로그램에서는 문자 'A'를 65로 표현하기로 약속했다고 가정하면 컴파일러는 A를 65로 바꾼다. 그런데 운영체제는 65숫자를 받아서 'B' 로 출력한다고 인식하고 있다고 한다면 문제가 될 것이다. 결..
반복문 1. while문의 이해 while문은 반복의 조건이 '참' 인동안 반복의 영역을 반복 실행하게 된다. 2. while문에서 break의 활용 break는 switch문 외에, 각종 반복문에서도 마찬가지로 빠져나가는데 사용된다. 단 break는 속해있는 하나의 반복문만을 빠져나간다. 3. while문에서 continue의 활용 continue는 반복문을 빠져나가는게 아니라 나머지 부분을 생략한다. continue문을 만나면 while문의 나머지 부분을 실행하지 않고, while문의 맨 위로 이동하여 조건검 사부터 실행을 다시 이어나간다. 4. do~while문 do~while문은 조건검사를 앞부분이 아닌, 뒷부분에서 한다. 따라서 do~while문은 반드시 반복 영역이 한번은 실행이 된다는 특징이 있다...
스코프(scope) 1. 스코프란? - 범위 또는 영역이라는 의미이다. 영역은 변수에 접근이 가능한 영역을 의미한다. 2. 지역이 다르면 동일한 이름의 변수 선언 가능 - 중괄호에 의해서 구분이 되는 영역,지역을 달리하면 동일한 이름의 변수선언이 가능하다. - 3행의 첫 번째 num은 5행과 13행의 num과 같다. 그리고 두번째와 세번째 num은 다른 num이다. - 이렇게 main함수에서 선언된 변수 num의 접근 가능 영역은 변수가 선언된 위치서부터 main함수 의 마지막까지 이어간다. 그런데 main함수 내에 존재하는 if문 안에서도 num 이라는 변수가 새로 선언되었다. 이러한 경우 if문 안에서는 더이상 main함수에서 선언된 변수 num의 접근이 불가능하 고, 새로 선언된 변수에 접근이 가능하다. 반면 else..
swtich문 if~else의 중첩을 대신할 수 있는 switch 아래의 swtich 문은 num값이 1이라면 case1 라벨부터 마지막까지 쭉 실행이 된다. 123456789101112131415161718192021222324int main(void){ int num; printf("1에서 3 사이의 정수 입력: "); scanf("%d", &num); switch(num) { case 1://num이 1이면 여기서부터 시작 printf("A1 "); printf("A2 "); case 2://num이 2이면 여기서부터 시작 printf("B1 "); printf("B2 "); case 3://num이 3이면 여기서부터 시작 printf("C1 "); printf("C2 "); default://이도 저도 아니면 ..
삼항 연산자 삼항 연산자란? 앞서본 if~else문을 대체 할 수 있는 삼항 연산자(조건 연산자)에 대해 알아보자. 삼항 연산자는 ?와 기호 : 으로 구성되어 있다. 이 두개의 기호가 하나의 연산자를 구성한다. 그리고 피연산자는 '조건', A, B 이렇게 세 개이다. 123456789101112131415161718int main(void){ int num; int abs; printf("정수 입력: "); scanf("%d", &num); if(num==0) printf("제로입니다. \n"); else (num>0) ? printf("양수입니다. \n") : printf("음수입니다. \n"); abs = (num>0) ? num : num*(-1); printf("입력된 수의 절대값: %d \n", abs); ..
if~else문 1. if문에 의한 조건적 실행 다음 코드를 보면 비효율적인 부분이 있다. 4개의 if문 중에서 하나만 만족이 되기 때문에 하나만 실행하고 나머지는 건너 뛰는것이 좋다. 그런데 아래는 모든 if문을 실행한다. 이를 해결하기 위해 if~else문을 알아보자 12345678910111213141516171819202122232425262728293031323334int main(void){ int num; printf("정수 입력: "); scanf("%d", &num); if(num=0 && num=10 && num=20) { printf("입력된 숫자는 20이상. \n"); return 0; } return 0; // 사실상 실행되지 않는 return문}Colored by Color Scriptercs ..