비트 연산과 비트 패턴을 이해하기 위해서 자료형에 대한 이해가 필수적이다. 컴퓨터는 자료(Data)를 어떻게 기억할까? 램을 사용허기 때문에 보통 메모리라고 하면 램을 의미한다. 메모리는 1바이트 단위로 주소가 매겨져 있으며 운영체제마다 주소를 관리하는 방법이 다르다
자료형은 데이터를 표현하는 방법이다. C언어가 제공해주는 기본 자료형에 대하여 알아 보겠다. int, double, char 등 이와 같은 일부의 키워드를 자료형이라고 한다. 이러한 자료형들은 다음과 같이 2가지 정보를 담고 있다. 표현 또는 저장 하려는 데이
제어문은 프로그램의 실행 흐름을 제어하는 문법이다.제어문이란 주어진 조건에 따라 코드 블록을 실행하거나 반복실행 할 때 사용한다. 일반적으로 코드는 위에서 아래로 순차적으로 실행된다. 제어문은 코드의 실행순서를 인위적으로 제어할 수 있다. 예를들어 우리가 학교에 갈 때
IF ~ Else문 ~ 조건문조건문을 사용하다 보면 상황이 서로 반대되는 조건을 나열해야 할 때가 있다. 예를 들어, 비가 오면 우산을 들고 간다. // 비가 오지 않으면 운동화를 신고 나간다. 와 같은 표현이다.이 표현에서 '비가 오면' 이라는 조건과 '비가 오지 않
조건 수식 연산자조건 수식 연산자(Conditional-expression Operator)는 if~else~ 조건문과 비슷한 형태를 가지는 연산 수식이다. 하지만 조건문과 다른점은 조건 수식 연산자는 연산자이기 때문에 명령을 처리하고 나면 결과 값을 반환하는 형태로
중첩 IF 조건문if 조건문을 사용하다 보면, 조건 수식이 만족되어 실행하는 명령문안에 또 조건문이 포함되는 경우가 있다. 이런 상황을 조건문이 중첩되었다고 한다.중첩의 개수는 제한이 없다. 하지만 많이 중첩되면 프로그램의 수행 능력이 떨어지고 프로그래머가 이해하기도
Switch문if문이 비효율적인 경우, switch문을 사용하면 된다. switch 조건문은 정해진 상수들과 직접적인 비교를 할 수 있는 문법으로 되어있다.switch문은 "변수 값이 이미 정해져 있는 상수들과 비교할 때는 switch 조건문이 유리하다."<전체적
<문제>작성하시오.코드
while문 기본 구조반복문의 또 다른 종류로 while 반복문이 있다. for 반복문은 정규화된 형식을 갖고 있다면, while 반복무은 '종결 조건'만 형식으로 갖고 있다. while 반복문은 '종결 조건'이 거짓이 될 때까지 명령문을 반복한다.for과 마찬가지로
표준 입출력 라이브러리 컴퓨터의 주기억 장치인 램은 전원이 켜져 있을 때만 데이터를 유지할 수 있다.하지만 컴퓨터를 365일 켜 놓을 순 없기 때문에 보조기억 장치(디스크 ,SSD, HDD)가 필요하다.하지만 보조기억 장치가 너무 다양하기 때문에 프로그래머가 일일이 보
파일 입출력 함수의 도우미 FILE 구조체 표준 입출력 라이브러리를 사용해 파일에 데이터를 저장하거나 읽는 방식이 존재한다. 표준 입출력 라이브러리는 'FILE 구조체'로 포인터 변수를 선언하고 파일 입출력 함수를 호출할 때마다 이 변수를 넘겨준다. fseek 함수
배열이란?학생 20명의 국어 성적을 저장하려면 자료형에 상관없이 변수를 20개 선언해야 한다. 똑같은 자료형으로 많은 수의 변수를 선언하고 사용할 떄는 나열식 표현에 한계가 있다. 그래서 c언어는 데이터를 그룹으로 묶어서 표현하는 배열(Array)문법을 사용한다.배열
배열에 부족함을 많이 느껴 예제를 통해 자세히 알아보겠다.출처 : https://modoocode.com/18학생 평균을 구하는 프로그램1위 평균 구하는 프로그램은 앞에서도 한 번 만들어 보았는데 이번에는 배열을 이용하여 프로그램을 만들었다. 이전보다 오히려
if 조건문에서 조건 수식은 단순화 시키자!if 조건문을 사용하다 보면 조건 수식이 0과 다른지 비교하는 경우가 있다.예를 들어, if(0 != A)와 같은 경우다. 0 != A라는 조건 수식은 A 값이 0이 아니면 참, A값이 0이면 거짓이라는 뜻이다. 굳이 A를 0
출처 ㅣ DO IT C언어 - 김성엽 > 문자열과 배열 C언어에서 문자를 저장하는 데 적합한 자료형은 char형이다. 그렇기 때문에 문자열을 저장하려면 char형 변수를 그룹으로 묶어서 관리하는 char 배열을 사용해야 된다. 예를 들어 "happy"를 저장하려면
출처 : DO IT C언어 - 김성엽1차원 배열을 2차원 배열로 표현하려면 어떻게 해야 될까?바둑판을 생각해보자. 바둑판에 놓여 있는 돌의 정보를 저장하고 싶다면 돌 한 개의 정보를 어떤 형식의 변수에 저장할 것인지를 먼저 결정해야 된다. 돌의 정보는 돌이 놓여 있지
2차원 예제대부분 사람들이 2차원 배열을 어려워한다. 필자 또한 그렇다. 하지만 약하다고 가만히 있을 수 있나? 약점을 보안하고 장점으로 바꾸자.1차원 배열을 -> 2차원 배열로 변환한 것이다. for문을 통해서 data의 범위 12까지 돌리고 i자체가 배열의 인덱스값
이번 시간에는 C 포인터와 관련된 문제를 모두 풀어보자. 대표적인 에제부터 시작한다.여기서 중점인 것은 (\*p)3이 의미하는 것, 2차원 배열을 포인터로 구현 한 것.마지막에 printf("%d", (\*(p+i)j)); 가 의미하는 것을 기억하자.
D_data는 int형 변수를 갖는다. 4바이트 -> 포인터가 가르키는 대상은 1바이트 char형 -> 형 변환으로 1바이트 char형 선언 int형에서 4바이트 중에서 1바이트만 사용한다.void형 포인터에 대해 알아보자.형 변환 문법을 주로 사용하여 처리한다. 다
extra_string을 선언했다. NULL문자 포함하기 떄문에 최대 9개의 문자까지 저장이 가능하다.문자열을 입력받아 extra_string에 저장하고 -> 출력했다. 만약에 우리가 사용하는 gets함수가 안 된다면, fgets함수를 사용하자. 하지만 fgets함수는
이번 시간엔 문자열을 정수로 변환하는 예제를 풀어보겠다.이 문제를 해결하기 위해선 간단한 아스키 코드를 변환 할 줄 알아야 된다.위와 같이 입력하면 오류가 발생한다. 왜냐하면 정수형 변수를 대입 할 수 없기 때문이다.이번 시간에 할 예제는 이런 상황에서 문자열을 ->
우리가 atoi함수를 사용하기 전에 atoi함수가 무엇인지 어떤 역할을 하는지 인지 해야된다. whitespace : \\t, \\v, \\n, \\f, \\r, ' '아스키코드로는 9부터 13까지, ' '는 32man isspace 명령어를 사용해보자(리눅스 한정)만
헤더파일헤더란 파일에 대한 정보를 실어 놓는 부분이다. 그렇기 때문에 어떤 함수를 사용하느냐에 따라 포함하는 헤더가 달라진다. 다음은 대표적인 헤더의 종류다 stdio.h (Standard Input Output)표준 입출력에 관련된(파일 입출력 포함) 함수들을 정의
알고리즘을 배우다 보면 빠질 수 없는 부분이 에라토스테네스의 체다.체로 치듯이 수를 걸러낸다고 해서 '에라토스테네스의 체'라고 부른다.노다가성이 즐비하지만 특정 범위 내의 소수를 판정하는데 효율적이다.일단 1부터 100까지의 숫자를 쭉 쓴다.소수도, 합성수도 아닌 유일
표준 입력 함수 Scanf 함수를 알아보자. 다양한 키워드로 문자, 문자열뿐만 아니라 정수, 실수까지 모두 입력 받을 수 있도록 형식화된 입력을 말한다. 이와 같이 입력 받기 위해선 입력 형식 지정자가 필요하다. scanf("%d",&n) 여기서 %d를 의미한다.
배열과 포인터 배열과 포인터에 대한 예제를 살펴보겠다. 만약에 int* 형 포인터 변수 3개를 표현하려면 어떻게 표현 할 것인가? 이렇게 표현 할 것이다. 더 양질의 코드를 살펴보자면 이렇게 배열과 포인터의 결합이 가능하다. 포인터를 배열 형식으로 선언할 때,
이번 시간에는 동적 메모리 할당을 사용해서 이름을 입력 받고 출력하는 예제를 진행하겠다. 동적 할당을 일컫는 말은 힙 영역을 뜻한다. 동적 메모리 할당을 사용해서 이름을 입력받고 출력하는 예제를 살펴보겠다. if문을 통해서 포인터 p_temp가 제대로 할당 됐는지
2차원 배열 예제간단하게 malloc 함수를 이용해서 2차원 포인터 구조를 만들어보자.자세한 설명은 주석 참조.포인트로 볼 부분은 동적으로 할당한 메모리를 해제하는 순서가 중요하다.(\*arr) 먼저 풀어준 이유는 주소값을 잃어 버리기 때문이다.세 번 째에 있는 포인터
typedef 예제를 풀어보자 이 처럼 typedef와 struct는 중요한 부분을 차지한다.참고 | https://blog.naver.com/tipsware/221200252889scanf_s 함수 정리 참고 작업메뉴 : main 함수에서 처리한다.사용자가
노드에 대해 알아보자.헤드포인터를 NULL 값으로 초깃값 대입 새 노드를 위해서 메모리를 할당하고 주소 값을 헤드 포인터에 저장한다.노드의 number에 값 12를 저장하고 -> 다음 노드가 없다.두번 쨰 노드 메모리를 할당한다.노드 number 값에 15를 대입한다.
연결 리스트로 더하기 프로그램을 만들어보자.다음은 파일 입출력에 대해서 알아보겠다.
출처 | https://dojang.io/mod/page/view.php?id=439memcpy함수에 대해 알아보자.memcpy(&p2, &p1, sizeof(struct Point2D));&p2 : 목적지 포인터 &p1 : 원본 포인터 <-(방향)앞 부
표준 입출력 라이브러리는 'FILE 구조체'로 포인터 변수를 선언하고 함수를 호출할 때마다 이 변수를 넘겨주도록 만들어졌다.fseek 함수를 호출하면, 프로그램에서 파일을 사용하고, 기억해야 할 내부 상태의 값을 p_file 파일 포인터에 저장한다.파일 열기를 할 땐,
파일 입출력 2번 째 글이다. 이번엔 텍스트 파일에 데이터를 읽고 쓰는 것에 대해 다룰 예정이다. 1. fprintf 화면에 문자 또는 숫자를 출력하고 싶으면 printf 함수를 사용한다. 첫 매개변수를 파일 포인터를 받아서, 출력할 문자열을 파일에 저장한다. "b
기존에 알고 있는 포인터는 데이터 세그먼트 or 스택 세그먼트에 있는 변수의 주소나 메모리 주소를 저장해서 사용하는 데이터 포인터에 대한 얘기다.이번 시간은 코드 세그먼트에 있는 명령문의 주소를 저장해서 포인터로 사용하는 방법에 대해 알아보자.함수 포인터특정 함수를 구
출처 | https://eskeptor.tistory.com/25?category=928922이번 시간에는 파일분할에 대해서 알아보겠다.파일 분할에 대해 알기 전 전처리기에 관련된 얘기를 인지하고 있어야 한다.전처리기란 선행처리기라고도 불린다.(영어로는 Pre
https://blockdmask.tistory.com/391