πŸ“š Language/C

γ€Žμœ€μ„±μš°μ˜ μ—΄ν˜ˆ C ν”„λ‘œκ·Έλž˜λ°γ€ 을 μ°Έκ³ ν•˜μ˜€μŠ΅λ‹ˆλ‹€. γ€Žμœ€μ„±μš°μ˜ μ—΄ν˜ˆ C ν”„λ‘œκ·Έλž˜λ°γ€ 쀑 ν—·κ°ˆλ Έλ˜ λ‚΄μš©μ„ μ •λ¦¬ν•©λ‹ˆλ‹€. 16-1 ; 닀차원 λ°°μ—΄μ˜ 이해와 ν™œμš© '닀차원 λ°°μ—΄' 2차원 μ΄μƒμ˜ λ°°μ—΄. 2차원 λ°°μ—΄ : ν‰λ©΄κ΅¬μ‘°μ˜ λ°°μ—΄ 3차원 λ°°μ—΄ : 직윑면체 κ΅¬μ‘°μ˜λ°°μ—΄ 4차원 μ΄μƒμ˜ 배열선언은 λ¬Έλ²•μ μœΌλ‘œ ν—ˆμš©ν•˜μ§€λ§Œ λΆˆν•„μš”ν•˜κ³  λ…Όλ¦¬μ μœΌλ‘œ μ΄ν•΄ν•˜κΈ°λ„ μ–΄λ €μš΄ ν˜•νƒœλ‹€. 2차원 λ°°μ—΄μ˜ μ„ μ–Έ TYPE arr[μ„Έλ‘œκΈΈμ΄][κ°€λ‘œκΈΈμ΄]; int arr1[3][4]; // μ„Έλ‘œκ°€ 3, κ°€λ‘œκ°€ 4인 intν˜• 2차원 λ°°μ—΄ int arr2[2][6]; // μ„Έλ‘œκ°€ 2, κ°€λ‘œκ°€ 6인 intν˜• 2차원 λ°°μ—΄ sizeofμ—°μ‚°μžμ˜ ν”Όμ—°μ‚°μžλ‘œ λ°°μ—΄μ˜ 이름이 였면 λ°°μ—΄μ˜ 크기가 λ°”μ΄νŠΈ λ‹¨μœ„λ‘œ κ³„μ‚°λ˜μ–΄μ„œ λ°˜ν™˜λœλ‹€. 2μ°¨μ›λ°°μ—΄μ—μ„œλ„! 2차원 λ°°μ—΄μš”μ†Œμ˜ ..
γ€Žμœ€μ„±μš°μ˜ μ—΄ν˜ˆ C ν”„λ‘œκ·Έλž˜λ°γ€ 을 μ°Έκ³ ν•˜μ˜€μŠ΅λ‹ˆλ‹€. γ€Žμœ€μ„±μš°μ˜ μ—΄ν˜ˆ C ν”„λ‘œκ·Έλž˜λ°γ€ 쀑 ν—·κ°ˆλ Έλ˜ λ‚΄μš©μ„ μ •λ¦¬ν•©λ‹ˆλ‹€. λͺ©μ°¨ 14-1 ; ν•¨μˆ˜μ˜ 인자둜 λ°°μ—΄ μ „λ‹¬ν•˜κΈ° 14-2 ; Call-by-value vs. Call-by-reference 14-3 ; 포인터 λŒ€μƒμ˜ const μ„ μ–Έ 14-1 ; ν•¨μˆ˜μ˜ 인자둜 λ°°μ—΄ μ „λ‹¬ν•˜κΈ° μΈμžμ „λ‹¬μ˜ 기본방식은 κ°’μ˜ 볡사 "ν•¨μˆ˜ 호좜 μ‹œ μ „λ‹¬λ˜λŠ” 인자의 값은 λ§€κ°œλ³€μˆ˜μ— 볡사가 λœλ‹€." 즉, 볡사가 λ˜λŠ” 것 뿐이기에 ν•¨μˆ˜κ°€ 호좜되고 λ‚˜λ©΄, μ „λ‹¬λ˜λŠ” μΈμžμ™€ λ§€κ°œλ³€μˆ˜λŠ” λ³„κ°œκ°€ 됨. int SimpleFunc(int num){....} int main(void){ int age=17; SimpleFunc(age); // age에 μ €μž₯된 값이 λ§€κ°œλ³€μˆ˜ num에 볡사됨 .... } ..
γ€Žμœ€μ„±μš°μ˜ μ—΄ν˜ˆ C ν”„λ‘œκ·Έλž˜λ°γ€ 을 μ°Έκ³ ν•˜μ˜€μŠ΅λ‹ˆλ‹€. γ€Žμœ€μ„±μš°μ˜ μ—΄ν˜ˆ C ν”„λ‘œκ·Έλž˜λ°γ€ 쀑 ν—·κ°ˆλ Έλ˜ λ‚΄μš©μ„ μ •λ¦¬ν•©λ‹ˆλ‹€. 13-1 ; 포인터와 λ°°μ—΄μ˜ 관계 λ°°μ—΄μ˜ 이름은 포인터. 단, 값을 λ°”κΏ€ 수 μ—†λŠ” 'μƒμˆ˜ ν˜•νƒœμ˜ 포인터', '포인터 μƒμˆ˜' %p : μ£Όμ†Œ κ°’μ˜ 좜λ ₯에 μ‚¬μš©ν•˜λŠ” μ„œμ‹λ¬Έμž 비ꡐ쑰건 \ λΉ„κ΅λŒ€μƒ 포인터 λ³€μˆ˜ λ°°μ—΄μ˜ 이름 이름이 μ‘΄μž¬ν•˜λŠ”κ°€? 쑴재 쑴재 무엇을 λ‚˜νƒ€λ‚΄κ±°λ‚˜ μ €μž₯ν•˜λŠ”κ°€? λ©”λͺ¨λ¦¬μ˜ μ£Όμ†Œ κ°’ λ©”λͺ¨λ¦¬μ˜ μ£Όμ†Œ κ°’ μ£Όμ†Œ κ°’μ˜ 변경이 κ°€λŠ₯ν•œκ°€? κ°€λŠ₯ λΆˆκ°€λŠ₯(μƒμˆ˜) 1차원 λ°°μ—΄μ΄λ¦„μ˜ 포인터 ν˜•μ€ λ°°μ—΄μ˜ 이름이 κ°€λ¦¬ν‚€λŠ” λŒ€μƒμ„ κΈ°μ€€μœΌλ‘œ κ²°μ • 포인터 λ³€μˆ˜λ₯Ό λ°°μ—΄μ˜ μ΄λ¦„μ²˜λŸΌ μ‚¬μš©ν•˜λŠ” κ²½μš°λŠ” 거의 μ—†κ³ , λ°°μ—΄μ˜ 이름을 포인터 λ³€μˆ˜μ²˜λŸΌ μ‚¬μš©ν•˜λŠ” κ²½μš°λ„ 거의 μ—†λ‹€. ν•˜μ§€λ§Œ 이게 κ°€λŠ₯ν•˜λ‹€λŠ” 건 μ•Œμ•„μ•Ό ν•œλ‹€. 1..
γ€Žμœ€μ„±μš°μ˜ μ—΄ν˜ˆ C ν”„λ‘œκ·Έλž˜λ°γ€ 을 μ°Έκ³ ν•˜μ˜€μŠ΅λ‹ˆλ‹€. γ€Žμœ€μ„±μš°μ˜ μ—΄ν˜ˆ C ν”„λ‘œκ·Έλž˜λ°γ€ 쀑 ν—·κ°ˆλ Έλ˜ λ‚΄μš©μ„ μ •λ¦¬ν•©λ‹ˆλ‹€. 12-1 ; ν¬μΈν„°λž€ 무엇인가? 포인터λ₯Ό μ΄μš©ν•˜λ©΄ λ©”λͺ¨λ¦¬μ— 직접 접근이 κ°€λŠ₯ν•˜λ‹€. 포인터 λ³€μˆ˜ : μ£Όμ†Œ κ°’μ˜ μ €μž₯을 λͺ©μ μœΌλ‘œ μ„ μ–Έ. 32λΉ„νŠΈ μ‹œμŠ€ν…œμ—μ„œλŠ” μ£Όμ†Œ 값을 32λΉ„νŠΈλ‘œ ν‘œν˜„ν•˜κΈ° λ•Œλ¬Έμ— 포인터 λ³€μˆ˜μ˜ 크기가 4λ°”μ΄νŠΈμΈ 반면, 64λΉ„νŠΈ μ‹œμŠ€ν…œμ—μ„œλŠ” μ£Όμ†Œ 값을 64λΉ„νŠΈλ‘œ ν‘œν˜„ν•˜κΈ° λ•Œλ¬Έμ— 포인터 λ³€μˆ˜μ˜ 크기가 8λ°”μ΄νŠΈμ΄λ‹€. 64 * bit = 2^6 * 2 = 2*7 8 * byte = 2^3 * 2^4 = 2*7 64λΉ„νŠΈ μ‹œμŠ€ν…œμ—μ„œ λ™μž‘ν•˜λŠ” μ»΄νŒŒμΌλŸ¬λŠ” 64λΉ„νŠΈλΏλ§Œ μ•„λ‹ˆλΌ 32λΉ„νŠΈλ‘œλ„ 컴파일이 κ°€λŠ₯ν•˜λ‹€. λ”°λΌμ„œ 포인터 λ³€μˆ˜ λŒ€μƒμ˜ sizeof μ—°μ‚°μ˜ 결과둜 8이 λ°˜ν™˜λ¨μ„ ν™•μΈν•˜κΈ° μœ„ν•΄μ„œλŠ” ..
γ€Žμœ€μ„±μš°μ˜ μ—΄ν˜ˆ C ν”„λ‘œκ·Έλž˜λ°γ€ 을 μ°Έκ³ ν•˜μ˜€μŠ΅λ‹ˆλ‹€. γ€Žμœ€μ„±μš°μ˜ μ—΄ν˜ˆ C ν”„λ‘œκ·Έλž˜λ°γ€ 쀑 ν—·κ°ˆλ Έλ˜ λ‚΄μš©μ„ μ •λ¦¬ν•©λ‹ˆλ‹€. 11-1 ; λ°°μ—΄μ˜ 이해와 λ°°μ—΄μ˜ μ„ μ–Έ 및 μ΄ˆκΈ°ν™” 방법 λ°°μ—΄μ˜ 이름을 λŒ€μƒμœΌλ‘œ ν•˜λŠ” sizeof μ—°μ‚°μ˜ κ²°κ³Όλ‘œλŠ” 'λ°”μ΄νŠΈ λ‹¨μœ„μ˜ λ°°μ—΄ 크기'κ°€ λ°˜ν™˜λœλ‹€. λ”°λΌμ„œ λ°°μ—΄μ˜ 크기가 μ•„λ‹Œ, 길이λ₯Ό κ³„μ‚°ν•˜κ³  μ‹Άλ‹€λ©΄ μ•„λž˜μ™€ 같이 λ¬Έμž₯을 κ΅¬μ„±ν•œλ‹€. int arr[]= {1,2}; int arrlen; arrlen = sizeof(arr) / sizeof(int); 문제 11-1 [1차원 λ°°μ—΄μ˜ ν™œμš©] 문제 1 #include int main(int argc, const char * argv[]) { int arr[5] = {}; int i = 0; printf("5개의 μ •μˆ˜λ₯Ό μž…λ ₯ν•˜μ‹œμ˜€: "); for..
yesolz
'πŸ“š Language/C' μΉ΄ν…Œκ³ λ¦¬μ˜ κΈ€ λͺ©λ‘