c & c++

[C] 기초, λ©”λͺ¨λ¦¬ μ €μž₯μ†Œ

쑰밈밍 2022. 8. 2. 00:28

πŸ’‘ C μ–Έμ–΄

: 컴파일러 μ–Έμ–΄

: .c(μ›λ³ΈνŒŒμΌ : μ‚¬λžŒμ΄ 인식) -> 컴파일 -> .obj (컴퓨터가 인식할 수 μžˆλŠ” 파일둜 λ³€κ²½) -> .exe(μ΅œμ’… μ‹€ν–‰νŒŒμΌ)

❗ μ»΄νŒŒμΌλŸ¬λΌλŠ” ν”„λ‘œκ·Έλž¨μ— μ˜ν•΄ κΈ°κ³„μ–΄λ‘œ λ²ˆμ—­λœλ‹€.

* c++의 ν™•μž₯자 : .cpp

 

πŸ’‘ μ•Œκ³ λ¦¬μ¦˜ 

: λ¬Έμ œμ—μ„œ μΌμ •ν•œ νŒ¨ν„΄μ„ λ°œκ²¬ν•˜κ³ , νŒ¨ν„΄μ„ ν† λŒ€λ‘œ 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 절차

: λ³΅μž‘ν•œ 문제λ₯Ό μž‘μ€ 문제둜 λ‚˜λˆ„μ–΄μ„œ ν•˜λ‚˜μ”© μ ‘κ·Ό

 -> μž‘μ€ 문제λ₯Ό ν•˜λ‚˜μ”© ν•΄κ²°ν•˜λ‹€λ³΄λ©΄ κ²°κ΅­ 큰 문제λ₯Ό ν•΄κ²°.

❗ ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜λŠ” μž‘μ—…μ€ μš”κ΅¬μ‚¬ν•­μ„ λ§Œμ‘±μ‹œν‚€λŠ” 일

 

μ†ŒμŠ€μ½”λ“œ (source code) : ν”„λ‘œκ·Έλž¨μ˜ λ‚΄μš© 자체λ₯Ό μ†ŒμŠ€ μ½”λ“œλΌ ν•œλ‹€

μ†ŒμŠ€νŒŒμΌ (source file) : μ†ŒμŠ€μ½”λ“œλ₯Ό μ‘°ν•©ν•΄ λ§Œλ“€μ–΄μ§„ 파일둜 cμ–Έμ–΄μ˜ ν™•μž₯자 .c

 

πŸ’‘ ꡬ성

: ν•˜λ‚˜μ˜ main ν•¨μˆ˜μ™€ μ—¬λŸ¬ 개의 ν•¨μˆ˜λ“€λ‘œ κ΅¬μ„±λœλ‹€

❗ main() : λ°˜λ“œμ‹œ ν•œκ°œλ§Œ 보유, ν”„λ‘œκ·Έλž¨μ˜ 처음 μ‹€ν–‰ μœ„μΉ˜λ₯Ό λ‚˜νƒ€λ‚Έλ‹€

: λ¬Έμž₯이 κΈ°λ³Έ λ‹¨μœ„, λͺ¨λ“  λ¬Έμž₯은 λ°˜λ“œμ‹œ ";"둜 λλ‚œλ‹€

: ν•¨μˆ˜λŠ” {둜 μ‹œμž‘ν•˜κ³ }둜 λλ‚œλ‹€, λΈ”λ‘μœΌλ‘œ μŒ“μ—¬μžˆλ‹€

: 주석문은 //,/* ~ */ 

: ν•„μš”μ—λ”°λΌ ν—€λ”νŒŒμΌ (header file) 을 μ§€μ •ν•œλ‹€

ex) printf() ν•¨μˆ˜λŠ” stdio.h νŒŒμΌμ„ ν•„μš”λ‘œν•œλ‹€.

❗ ν—€λ”νŒŒμΌ : ν”„λ‘œκ·Έλž¨ μž‘μ„±μ„ νŽΈλ¦¬ν•˜κ²Œ ν•˜κ³  ν”„λ‘œκ·Έλž¨μ„ μ•ˆμ „ν•˜κ²Œ μ»΄νŒŒμΌν•˜κΈ° μœ„ν•œ λ‹€μ–‘ν•œ 정보가 κΈ°μˆ λ˜μ–΄ μžˆλ‹€

❗ # : μ „μ²˜λ¦¬κΈ° : ν”„λ‘œκ·Έλž¨ μ‹€ν–‰μ‹œ 제일 λ¨Όμ € μ²˜λ¦¬ν•œλ‹€

 

: λ³€μˆ˜, ν•¨μˆ˜ <- λˆ„κ΅¬λ‚˜ μ•Œ 수 μžˆλŠ” μ΄ν•΄ν•˜κΈ° μ‰¬μš΄ 이름

: 주석 <- λ‚˜μ€‘μ— 봐도 잘 μ•Œ 수 μžˆλ„λ‘ μž‘μ„±ν•  것

 

πŸ’‘ λ³€μˆ˜

: 값을 μ €μž₯ν•œλ‹€ == 컴퓨터 λ©”λͺ¨λ¦¬μ— μ €μž₯ν•œλ‹€.

: 자료λ₯Ό μ €μž₯ν•˜κΈ° μœ„ν•œ 곡간

: ν• λ‹Ή 받은 λ©”λͺ¨λ¦¬ μ£Όμ†Œ λŒ€μ‹  λΆ€λ₯΄λŠ” 이름

: ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ 쀑 κ°’ λ³€κ²½ κ°€λŠ₯

: μ‚¬μš©λ˜κΈ° 이전에 μ„ μ–Έλ˜μ–΄μ•Όν•¨

: 데이터 νƒ€μž… λ³€μˆ˜λͺ…; // μ„ μ–Έ (λ³€μˆ˜λ₯Ό 지정) == ν•„μš”ν•œ μ €μž₯곡간을 컴퓨터 메인 λ©”λͺ¨λ¦¬μ— 확보해라.

: μˆ«μžλ‘œλŠ” μ‹œμž‘ν•  수 μ—†λ‹€

 

πŸ’‘ μƒμˆ˜

: ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ 쀑 λ³€ν•˜μ§€ μ•ŠλŠ” κ³ μ •λœ 수

: λ³€ν•˜μ§€ μ•ŠλŠ” 수

: const 데이터 νƒ€μž… μƒμˆ˜λͺ… = μƒμˆ˜κ°’;

 

πŸ’‘ λ°μ΄ν„°ν˜•

: λ¬Έμžν˜• : char : 1byte

: μ •μˆ˜ν˜• : int(*), long : 4byte

: μ‹€μˆ˜ν˜• : float(+fλΆ™μž„), double(*) : 4byte, 8byte

: λ¬΄μΉ˜ν˜• : void : 값을 갖지 μ•ŠλŠ”, 값을 갖지 μ•ŠμŒμ„ λͺ…μ‹œ

 

πŸ’‘ μž…λ ₯ν•¨μˆ˜

* scanf(μ„œμ‹μ§€μ •μž, &λ³€μˆ˜λͺ…)

- getchar()

- gets()

 

πŸ’‘ μ„œμ‹μ§€μ •μž

: printf둜 λ¬Έμžμ—΄ 좜λ ₯ν•  λ•Œ κ°’μœΌλ‘œ λ°”λ€ŒλŠ” λΆ€λΆ„

: %s(λ¬Έμžμ—΄), %c(문자), %d(μ •μˆ˜), &f(μ†Œμˆ˜μ )

 

πŸ’‘ μΆœλ ₯ν•¨μˆ˜

* printf()

- putchar()

- puts() 

 

πŸ’‘ μ•„μŠ€ν‚€ μ½”λ“œ

: 문자λ₯Ό 숫자둜 ν‘œν˜„ν•˜κΈ° μœ„ν•œ ν‘œμ€€ 규격

ex ) A -> 65 둜 μ €μž₯

 

πŸ’‘ λ©”λͺ¨λ¦¬ μ €μž₯μ†Œ

: λ©”λͺ¨λ¦¬ 곡간(μ½”λ“œ μ˜μ—­, 데이터 μ˜μ—­, νž™ μ˜μ—­, μŠ€νƒ μ˜μ—­)

μ½”λ“œ μ˜μ—­ ν”„λ‘œκ·Έλž¨μ˜ μ½”λ“œκ°€ μ €μž₯λ˜λŠ” λ©”λͺ¨λ¦¬ 곡간.
μ»΄ν“¨ν„°λŠ” μ½”λ“œ μ˜μ—­μ— μ €μž₯된 λͺ…령문을 ν•˜λ‚˜μ”© κ°€μ Έκ°€μ„œ μ‹€ν–‰.
데이터 μ˜μ—­ μ „μ—­ λ³€μˆ˜μ™€ μŠ€νƒ λ³€μˆ˜κ°€ ν• λ‹Ήλœλ‹€.
ν”„λ‘œκ·Έλž¨μ˜ μ‹œμž‘κ³Ό λ™μ‹œμ— λ©”λͺ¨λ¦¬ 곡간에 ν• λ‹Ήλ˜μ–΄ ν”„λ‘œκ·Έλž¨μ΄ μ’…λ£Œλ  λ•ŒκΉŒμ§€ λ‚¨μ•„μžˆλ‹€.
νž™ μ˜μ—­ μ›ν•˜λŠ” μ‹œμ μ— λ³€μˆ˜λ₯Ό ν• λ‹Ήν•˜κ³  μ†Œλ©Έν•  수 μžˆλŠ” λ³€μˆ˜λ“€μ΄ ν• λ‹Ήλ˜λŠ” μ˜μ—­.
malloc() ν•¨μˆ˜μ™€ free() ν•¨μˆ˜λ₯Ό μ΄μš©ν•œ 동적 λ©”λͺ¨λ¦¬ ν• λ‹Ή μ˜μ—­
μŠ€νƒ μ˜μ—­ 지역 λ³€μˆ˜μ™€ λ§€κ°œλ³€μˆ˜κ°€ ν• λ‹Ήλœλ‹€.
ν• λ‹Ήλœ λ³€μˆ˜λ“€μ€ μ„ μ–Έλœ ν•¨μˆ˜λ₯Ό λΉ μ Έλ‚˜κ°€λ©΄ μ†Œλ©Έν•œλ‹€.

* 데이터 μ˜μ—­, μŠ€νƒ μ˜μ—­μ— ν• λ‹Ή λ˜λŠ” λ³€μˆ˜λŠ” 생성과 μ†Œλ©Έ μ‹œμ μ΄ κ²°μ •λ˜μ–΄ μžˆλ‹€.