[5์ฃผ์ฐจ ๊ฐ๋ ]
โ๏ธ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ - 16์ง๋ฒ, ๋ฉ๋ชจ๋ฆฌ ์ฃผ์
16์ง๋ฒ : 2๊ฐ์ 16์ง์๋ 1byte์ 2์ง์๋ก ๋ณํ๋๊ธฐ ๋๋ฌธ์ ์ ๋ณด๋ฅผ ํํํ๊ธฐ ๋งค์ฐ ์ ์ฉ, 2์ง์๋ณด๋ค ๊ฐํธํ๋ฉด์ ์ปดํจํฐ๋ 10์ง์๋ฅผ ์ดํดํ ์ ์๊ธฐ ๋๋ฌธ์ 16์ง์๊ฐ ์ ์ฉ
๋ฉ๋ชจ๋ฆฌ ์ฃผ์ : int ํ์ ์ ์ปดํจํฐ์ ๋ฉ๋ชจ๋ฆฌ ์ด๋๊ฐ์ 4๋ฐ์ดํธ ๋งํผ์ ์๋ฆฌ๋ฅผ ์ฐจ์ง
-> C์์๋ ๋ณ์์ ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์๋ฅผ ๋ฐ๊ธฐ ์ํด ‘&’์ด๋ผ๋ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉ (printf("%p\n", &n);)
-> ‘*’๋ฅผ ์ฌ์ฉํ๋ฉด ๊ทธ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ์๋ ์ค์ ๊ฐ์ ์ป์ ์ ์์ (printf("%i\n", *&n);)
โ๏ธ ํฌ์ธํฐ
ํฌ์ธํฐ ๋ณ์ : *p๋ผ๋ ํฌ์ธํฐ ๋ณ์์ ์ฆ ๋ณ์ n์ ์ฃผ์(&n)๋ฅผ ์ ์ฅ (int n = 50; int *p = &n;)
-> p๊ฐ n์ ๊ฐ๋ฆฌํค๊ณ ์๋ค๋ ๊ฒ์ผ๋ก ํด์ ๊ฐ๋ฅ
โ๏ธ ๋ฌธ์์ด - ํฌ์ธํฐ, ๋ฌธ์์ด
string ์๋ฃํ์ ์ด์ฉํ์ฌ ๋ฌธ์์ด ์ถ๋ ฅ
char ํฌ์ธํฐ๋ฅผ ์ด์ฉํ์ฌ ๋ฌธ์์ด ์ถ๋ ฅ
โ๏ธ ๋ฌธ์์ด ๋น๊ต
&s[0], &s[1], &s[2], &s[3] : s๋ผ๋ ๋ฌธ์์ด์ ์ฒซ ๋ฒ์งธ ~ ๋ค ๋ฒ์งธ ๋ฌธ์์ ํด๋นํ๋ ์ฃผ์๊ฐ
*s, *(s+1), *(s+2), *(s+3) : ๋ฌธ์์ ๊ฐ์ ์ฒซ ๋ฒ์งธ ~ ๋ค ๋ฒ์งธ ์์๋๋ก ์ถ๋ ฅ
โ๏ธ ๋ฌธ์์ด ๋ณต์ฌ - malloc
string s ๋ char *s ์ ๋์ผํ ์๋ฏธ
๋ ๋ฌธ์์ด์ ์ค์ ๋ก ๋ฉ๋ชจ๋ฆฌ์์์ ๋ณต์ฌ -> ๋ฉ๋ชจ๋ฆฌ ํ ๋น ํจ์ ์ฌ์ฉ -> char *t = malloc(strlen(s) + 1);
: s ๋ฌธ์์ด์ ๊ธธ์ด์ ๋ ์ข ๋จ ๋ฌธ์์ ํด๋นํ๋ 1์ ๋ํ ๋งํผ ๋ฉ๋ชจ๋ฆฌ ํ ๋น
โ๏ธ ๋ฉ๋ชจ๋ฆฌ ํ ๋น๊ณผ ํด์ - free, valgrind
malloc ํจ์๋ฅผ ์ด์ฉํ์ฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ ํ free ํจ์๋ฅผ ์ด์ฉํ์ฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ -> ํด์ ํ์ง ์์ผ๋ฉด ์ฐ๋ ๊ธฐ ๊ฐ ๋ฐ์ -> ๋ฉ๋ชจ๋ฆฌ
์ฉ๋ ๋ญ๋น -> '๋ฉ๋ชจ๋ฆฌ ๋์'
valgrind : ๋ฒํผ ์ค๋ฒํ๋ก์ฐ์ ๋ฉ๋ชจ๋ฆฌ ๋์ ๋ ๊ฐ์ง ์๋ฌ ํ์ธ
โ๏ธ ๋ฉ๋ชจ๋ฆฌ ๊ตํ, ์คํ, ํ - ์คํ, ํ, ํฌ์ธํฐ
๋จธ์ ์ฝ๋ ์์ญ : ํ๋ก๊ทธ๋จ์ด ์คํ๋ ๋ ๊ทธ ํ๋ก๊ทธ๋จ์ด ์ปดํ์ผ๋ ๋ฐ์ด๋๋ฆฌ๊ฐ ์ ์ฅ
๊ธ๋ก๋ฒ ์์ญ : ํ๋ก๊ทธ๋จ ์์์ ์ ์ฅ๋ ์ ์ญ ๋ณ์๊ฐ ์ ์ฅ
ํ ์์ญ : malloc์ผ๋ก ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ
์คํ ์์ญ : ํ๋ก๊ทธ๋จ ๋ด์ ํจ์์ ๊ด๋ จ๋ ๊ฒ๋ค์ด ์ ์ฅ
a์ b๋ฅผ ๋ฐ๊พธ๋ ๊ฒ์ x์ y๋ฅผ ๋ฐ๊พธ๋ ๊ฒ์ ์๋ฌด๋ฐ ์ํฅ๋ ๋ฏธ์น์ง ์์ -> a์ b๋ฅผ ๊ฐ๊ฐ x์ y๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ๋ก ์ง์ ํจ์ผ๋ก์จ ๋ฌธ์ ํด๊ฒฐ
โ๏ธ ํ์ผ ์ฐ๊ธฐ - scanf, fopen, fprintf, fclose
fopen : FILE์ด๋ผ๋ ์๋ฃํ์ผ๋ก ๋ถ๋ฌ์ด
(fopen ํจ์์ ์ฒซ๋ฒ์งธ ์ธ์๋ ํ์ผ์ ์ด๋ฆ, ๋๋ฒ์งธ ์ธ์๋ ๋ชจ๋๋ก r์ ์ฝ๊ธฐ, w๋ ์ฐ๊ธฐ, a๋ ๋ง๋ถ์ด๊ธฐ)
fclose : ์์ ์ด ๋๋ ํ์๋ ํ์ผ์ ๋ํ ์์ ์ ์ข ๋ฃ
โ๏ธ ํ์ผ ์ฝ๊ธฐ - JPEG, fread
[5์ฃผ์ฐจ ํ๋ณ๋ฏธ์ ]
#include <stdio.h>
int main()
{
int arr[6][5] = {{1, 2, 3, 4, 5}, {6, 7, 8, 9, 10}, {11, 12, 13, 14, 15}, {16, 17, 18, 19, 20}, {21, 22, 23, 24, 25}, {26, 27, 28, 29, 30}}; // ๋ฐฐ์ด ์ ์ธ
int *p = (int *)arr; // ํฌ์ธํฐ ๋ณ์ p์ arr ๋ฐฐ์ด์ ์์ ์ฃผ์ ๋์
for(int i=5; i>=0; i--) { // ์ด์ค For๋ฌธ ์ฌ์ฉ์ผ๋ก ๋ฐฐ์ด ์ถ๋ ฅ
for(int j=0; j<5; j++){
printf("%d ", *(p + i*5) + j); // ์ด์ค ํฌ์ธํฐ๋ก ์ ๊ทผ
}
printf("\n");
}
}
'๊ฐ๋ฐ > CS50 ์ฝ์นญ์คํฐ๋' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[CS50 ์ฝ์นญ์คํฐ๋] 6์ฃผ์ฐจ_์๋ฃ๊ตฌ์กฐ (0) | 2021.03.02 |
---|---|
[CS50 ์ฝ์นญ์คํฐ๋] 4์ฃผ์ฐจ_์๊ณ ๋ฆฌ์ฆ (0) | 2021.02.28 |
[CS50 ์ฝ์นญ์คํฐ๋] 3์ฃผ์ฐจ_๋ฐฐ์ด (0) | 2021.02.27 |
[CS50 ์ฝ์นญ์คํฐ๋] 2์ฃผ์ฐจ_C์ธ์ด (0) | 2021.02.25 |
[CS50 ์ฝ์นญ์คํฐ๋] 1์ฃผ์ฐจ_์ปดํจํ ์ฌ๊ณ (0) | 2021.02.25 |