경고 : 최신판이 아닙니다. 이 문서의 오래된 판을 편집하고 있습니다. 이것을 저장하면, 이 판 이후로 바뀐 모든 편집이 사라집니다. 로그인하고 있지 않습니다. 편집하면 당신의 IP 주소가 공개적으로 기록됩니다. 계정을 만들고 로그인하면 편집 시 사용자 이름만 보이며, 위키 이용에 여러 가지 편의가 주어집니다.스팸 방지 검사입니다. 이것을 입력하지 마세요!{{쉽게 알 수 있다 시리즈|이 문서는 정말 쉽습니다.|문서의 내용이 너무 쉬워서 오늘부터 프로그래밍 할 수 있을 것 같습니다.}} [[분류:컴퓨터_프로그래밍]] === 준비 === [[윈도우 7]]이상에서는 Visual Studio Community를 다운로드 받아 설치하자 [[리눅스]]에서는 그딴거 없다. 터미널을 열고 [[GCC|gcc]]라고 쳐보자 만약에 명령어가 없다고 나오면 각각의 패키지 매니저에 알맞게 설치해주면 된다. [[OS X]]의 경우에는 [[Xcode]]를 다운 받으면 된다. 리눅스와 달리 초반에 터미널을 이용하는 것이 좀 귀찮다. Xcode를 다운 받은 후, 런치패드>>기타 응용프로그램>>터미널 선택 한 후에 xcode-select --install 을 입력한 후에 엔터를 누른다. 그 후에 뭔가 하라는 인스톨은 안하고 별 이상한 것들이 나오는데, 그냥 쭉 내려서 agree를 하면 그때부터 설치하겠냐는 창이 뜬다. 설치를 누르고 기다리고 있으면 사용이 가능해진다. 리눅스에서는 gcc로 컴파일을 하는데 OS X에서는 clang도 사용할 수 있다. 리눅스에서도 clang을 설치하면 사용할 수 있다. === <s>당연하지만</s> Hello, World! === <source lang=c> #include <stdio.h> int main(void) { printf("Hello, World!"); return 0; } </source> === 출력 형식 === 5 === 입력 형식 === === 변수 === ==== 자료형 ==== *void *char **signed char **unsigned char *short **signed short **unsigned short *int **signed int **unsigned int *long **signed long **unsigned long *long long **signed long long **unsigned long long *float *double *long double *bool<ref>c99에서 추가된 자료형이다.</ref> === 키워드 === auto break case char const continue default do double else enum extern float for goto if inline int long register restrict return short signed sizeof static struct switch typedef union unsigned void volatile while _Bool _Complex _Imaginary C언어에서 이미 용도가 정해져 있어 변수와 함수의 이름으로 사용할 수 없다. C99표준 기준이다. === 조건문 === 조건문은 조건에 따라 두 가지 혹은 그 이상의 실행 경로를 실행할 수 있게 하는 것을 말한다. C언어에는 조건문으로 두 경로 중 하나를 선택하는 if-else문과 여러경로 중 하나를 선택하는 switch문이 있다. ====if-else문==== ====switch문==== === 반복문 === 반복문은 특정 부분을 반복해서 실행하는 것을 말한다. C언어에는 while문, for문, do-while문이 있다. ====while문==== <source lang=c> while (조건문) { 문장 } </source> while문을 만나면 먼저 조건문을 검사한다. 조건문의 내용이 참이면 문장을 실행하고, 거짓이면 실행하지 않고 넘어간다. 문장의 내용을 모두 실행한 뒤에 다시 조건문을 검사한다. 계속 반복하다가 조건문이 거짓이 되면 빠져나온다. ====for문==== <source lang=c> for (초기식; 조건식; 변환식) { 문장 } </source> for문을 만나면 먼저 초기식을 실행한다. 조건식이 참이면 문장을 실행하고 거짓이면 실행하지 않고 넘어간다. 문장을 실행한 뒤, 변환식을 실행한 다음 조건식을 검사하고 참이면 실행, 거짓이면 넘어가기를 조건식이 거짓이 될 때까지 반복한다. 식들은 생략할 수 있지만 세미콜론은 생략할 수 없다. <source lang=c> for (초기식; ; 변환식) { 문장 } </source> 조건식을 생략하면 이런 모습이 된다. 모든 식을 다 비우는 경우는 자동으로 무한 루프가 된다.<ref>보통 많이 쓰는 while(1)의 경우 컴파일러가 최적화해주지 않으면 1을 비교하면서 돌아버리기 때문에 비교 연산이 전혀 없이 순수하게 루프만 도는 for (;;)를 선호하는 사람들도 있다.</ref> <source lang=c> for ( ; ; ) { // Infinite loops } </source> ====do-while문==== <source lang=c> do{ 문장 }while (조건식); </source> while문과 유사하지만 조건식을 먼저 검사하지 않고 중괄호 안의 내용을 먼저 검사한 뒤에 조건식을 검사한다. === 함수 === === 포인터 <s>고비</s> === === 다차원 배열 === === 구조체 === === 공용체 === === 열거형 === === 파일 입출력 === === 헤더파일, 소스파일 === === 고급 과정 === ====전처리기==== =====#define===== <nowiki>#</nowiki>define은 특정한 문자(이름)를 찾아 다른 형태(토큰)로 바꾼다. 두 줄 이상으로 작성하고 싶을 때에는 '\' 를 이용하면 된다. <source lang=c> #define 이름 토큰 </source> 작성 <source lang=c> #define Int_Max 2147483647 int max = Int_Max; </source> 결과 <source lang=c> int max = 2147483647; </source> 함수와 비슷한 형태로 작성하면 함수같이 사용할 수도 있다. <source lang=c> #define 이름(인자) 토큰 </source> 작성 <source lang=c> #define Sum(X, Y) X + Y int sum = Sum(1, 2); </source> X나 Y가 아니라 다른 것을 사용해도 상관없다. 수도 상관없다. 결과 <source lang=c> int sum = 1 + 2; </source> =====#undef===== <nowiki>#</nowiki>define으로 정의된 매크로를 무효화한다. 작성 <source lang=c> #define PI 3.141592 int pi = PI; #undef PI int pi = PI; </source> 결과 <source lang=c> int pi = 3.141592; int pi = PI; </source> int pi = PI; 부분에서 오류를 뱉어낸다. #undef로 무효화된 매크로는 그 밑으로 더 이상 작동하지 않는다. 사용 위치에 주의할 필요가 있다. =====#include===== 특정 파일의 내용을 가져와서 포함시킨다. <source lang = c> #include <stdio.h> int main(void) { printf("Hello, World!"); return 0; } </source> 위 소스 코드에서, #include <stdio.h>의 위치에 stdio.h 헤더파일의 내용이 옮겨진다. printf함수는 stdio.h 헤더파일 내에 선언되어있는 함수이다. <source lang = c> #include <헤더파일> #include "헤더파일" </source> 이렇게 두 가지 모양으로 쓸 수 있는데, <>는 컴파일러에 지정되어 있는 폴더에서 헤더파일을 찾고, ""는 소스 코드 파일이 있는 폴더에서 헤더파일을 찾는다. =====#if===== =====#elif===== =====#else===== =====#endif===== =====#ifndef===== =====#ifdef===== =====#error===== =====##===== =====#pragma===== 컴파일러에게 명령을 전달한다. <source lang=c> #pragma 명령 </source> 컴파일러마다 다르니 자세한 것은 [[추가바람]] {{각주}} {{쉽게 배우는 프로그래밍 입문}} 요약: 리브레 위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-동일조건변경허락 3.0 라이선스로 배포됩니다(자세한 내용에 대해서는 리브레 위키:저작권 문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요. 글이 직접 작성되었거나 호환되는 라이선스인지 확인해주세요. 리그베다 위키, 나무위키, 오리위키, 구스위키, 디시위키 및 CCL 미적용 사이트 등에서 글을 가져오실 때는 본인이 문서의 유일한 기여자여야 하고, 만약 본인이 문서의 유일한 기여자라는 증거가 없다면 그 문서는 불시에 삭제될 수 있습니다. 취소 편집 도움말 (새 창에서 열림) | () [] [[]] {{}} {{{}}} · <!-- --> · [[분류:]] · [[파일:]] · [[미디어:]] · #넘겨주기 [[]] · {{ㅊ|}} · <onlyinclude></onlyinclude> · <includeonly></includeonly> · <noinclude></noinclude> · <br /> · <ref></ref> · {{각주}} · {|class="wikitable" · |- · rowspan=""| · colspan=""| · |} {{lang|}} · {{llang||}} · {{인용문|}} · {{인용문2|}} · {{유튜브|}} · {{다음팟|}} · {{니코|}} · {{토막글}} {{삭제|}} · {{특정판삭제|}}(이유를 적지 않을 경우 기각될 가능성이 높습니다. 반드시 이유를 적어주세요.) {{#expr:}} · {{#if:}} · {{#ifeq:}} · {{#iferror:}} · {{#ifexist:}} · {{#switch:}} · {{#time:}} · {{#timel:}} · {{#titleparts:}} __NOTOC__ · __FORCETOC__ · __TOC__ · {{PAGENAME}} · {{SITENAME}} · {{localurl:}} · {{fullurl:}} · {{ns:}} –(대시) ‘’(작은따옴표) “”(큰따옴표) ·(가운뎃점) …(말줄임표) ‽(물음느낌표) 〈〉(홑화살괄호) 《》(겹화살괄호) ± − × ÷ ≈ ≠ ∓ ≤ ≥ ∞ ¬ ¹ ² ³ ⁿ ¼ ½ ¾ § € £ ₩ ¥ ¢ † ‡ • ← → ↔ ‰ °C µ(마이크로) Å °(도) ′(분) ″(초) Α α Β β Γ γ Δ δ Ε ε Ζ ζ Η η Θ θ Ι ι Κ κ Λ λ Μ μ(뮤) Ν ν Ξ ξ Ο ο Π π Ρ ρ Σ σ ς Τ τ Υ υ Φ φ Χ χ Ψ ψ Ω ω · Ά ά Έ έ Ή ή Ί ί Ό ό Ύ ύ Ώ ώ · Ϊ ϊ Ϋ ϋ · ΐ ΰ Æ æ Đ(D with stroke) đ Ð(eth) ð ı Ł ł Ø ø Œ œ ß Þ þ · Á á Ć ć É é Í í Ĺ ĺ Ḿ ḿ Ń ń Ó ó Ŕ ŕ Ś ś Ú ú Ý ý Ź ź · À à È è Ì ì Ǹ ǹ Ò ò Ù ù · İ Ż ż ·  â Ĉ ĉ Ê ê Ĝ ĝ Ĥ ĥ Î î Ĵ ĵ Ô ô Ŝ ŝ Û û · Ä ä Ë ë Ï ï Ö ö Ü ü Ÿ ÿ · ǘ ǜ ǚ ǖ · caron/háček: Ǎ ǎ Č č Ď ď Ě ě Ǐ ǐ Ľ ľ Ň ň Ǒ ǒ Ř ř Š š Ť ť Ǔ ǔ Ž ž · breve: Ă ă Ğ ğ Ŏ ŏ Ŭ ŭ · Ā ā Ē ē Ī ī Ō ō Ū ū · à ã Ñ ñ Õ õ · Å å Ů ů · Ą ą Ę ę · Ç ç Ş ş Ţ ţ · Ő ő Ű ű · Ș ș Ț ț 이 문서에서 사용한 틀: 틀:ㅊ (원본 보기) (준보호됨)틀:가로목록 (원본 보기) (준보호됨)틀:각주 (원본 보기) (준보호됨)틀:고지 상자 (원본 보기) (보호됨)틀:쉽게 알 수 있다 시리즈 (편집) 틀:취소선 (원본 보기) (준보호됨)틀:키 (원본 보기) (준보호됨)시리즈:쉽게 배우는 프로그래밍 입문 (편집) 이 문서는 다음의 숨은 분류 1개에 속해 있습니다: 분류:깨진 파일 링크가 포함된 문서