๐ฅ ์ ๋ณด์ฒ๋ฆฌ ๊ธฐ์ฌ ์ค๊ธฐ ํ๋ก๊ทธ๋๋ฐ-ํฌ์ธํฐ
#include <stdio.h>
int len(char* p);
int main( ) {
char* p1 = "2022";
char* p2 = "202207";
int a = len(p1);
int b = len(p2);
printf("%d", a + b);
}
int len(char* p) {
int r = 0;
while (*p != '\0') {
p++;
r++;
}
return r;
}
int len(char* p);
-> len() ํจ์์ ํ๋กํ ํ์
์ ์ธ์ด๋ค.๋ฌธ์ํ ํฌ์ธํฐ ๋ณ์
๋ก ๊ฐ ๋ฌธ์๊ฐ ์ ์ฅ๋ ์ฃผ์์ ์ฃผ์๋ก ์ด๊ธฐํ ๋๋ค.
์ฆ, 4 + 6
#include <stdio.h>
int main( ) {
int a[4] = { 0, 2, 4, 8 };
int b[3];
int* p;
int sum = 0;
for (int i = 1; i < 4; i++) {
p = a + i;
b[i - 1] = *p - a[i - 1];
sum = sum + b[i - 1] + a[i];
}
printf("%d", sum);
}
์ฒซ๋ฒ์งธ ๋ฐ๋ณต i = 1
`p = a + i` => a๋ฐฐ์ด์ ๋๋ฒ์งธ ์์์ ์ฃผ์ ์ ์ฅ
`b[0]` = (*p => p์ ์ฃผ์๊ฐ ๊ฐ๋ฆฌํค๋๊ณณ์ ๊ฐ)2 - 0 = 2
sum = 0 + 2 + 2 = 4
๋๋ฒ์งธ ๋ฐ๋ณต i = 2
a๋ฐฐ์ด์ ์ธ๋ฒ์งธ์์ 4
`b[1]` = 4 - 2 = 2
sum = 4 + 2 + 4 = 10
์ธ๋ฒ์งธ ๋ฐ๋ณต i = 3
a๋ฐฐ์ด์ ๋ค๋ฒ์งธ์์ 8์ ์ฃผ์
'b[2]' = 8 - 4 = 4
sum = 10 + 4 + 8 = 22
p
์ ๋ฐฐ์ด์ ์ง์ ๋์
ํ๋๊ฒ์ ์ฃผ์๊ฐ์ ๋ฃ๋๊ฒ์ด๋ค.p*
์ฒ๋ผ ์ฌ์ฉํ๋ฉด, ํด๋น ์ฃผ์๊ฐ ๋ด์ ๊ฐ์ ์๋ฏธํ๋ค.
p์ ์ง์ ๋์
ํ ๋ ๋ง๊ณ ๋ ๋ค ๋ฐฐ์ด๊ณผ ์ฌ์น์ฐ์ฐ์ด๋ค.#include <stdio.h>
int main() {
int* array[3];
int a = 12, b = 24, c = 36;
array[0] = &a;
array[1] = &b;
array[2] = &c;
printf("%d", *array[1] + **array + 1);
}
array
[ , , ]array[0] = &a;
๋ a์ ์์ ์ฃผ์๋ฅผ ์ฝ์
ํ๋ ๊ฒ์ด๋ค.array[1]
์ &b(b์ ์ฃผ์๊ฐ)์ด๊ณ , *array[1]
์ ๊ทธ ์ฃผ์๊ฐ ์ง๋๊ณ ์๋ ์ค์ ๊ฐ 24์ด๋ค.**array + 1
=>
array
: ๋ฐฐ์ด์ ์ด๋ฆ๋ง ์ง์ ํ๋ฉด ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์์์ ์ฃผ์์ธ &array[0]
, ์ฆ array์ ์ฒซ์ฃผ์๊ฐ*array
: array์ ์ฒซ์ฃผ์๊ฐ(array
)์ด ๊ฐ์ง๋ ์ค์ ๊ฐ &a ์ฆ int a
์ ์ฃผ์๊ฐ.**array
: int a
์ ์ฃผ์๊ฐ์ ์ค์ ์ง๋๊ณ ์๋๊ฐ 12์ด๋ค.์ฆ, 24 + 12 + 1
#include <stdio.h>
int main() {
int ary[3];
int s = 0;
*(ary + 0) = 1;
ary[1] = *(ary + 0) + 2;
ary[2] = *ary + 3;
for (int i = 0; i < 3; i++)
s = s + ary[i];
printf("%d", s);
}
*(ary + 0) = 1;
-> arr์ ์ฒซ ์ฃผ์๊ฐ์ ์ค์ ๊ฐ์ 1 ๋์
/ arr[1 , , ]
ary[1] = *(ary + 0) + 2;
-> arr[1]
์ 1+2 ๋์
/ arr[1 , 3 , ]
ary[2] = *ary + 3;
-> arr[2]
์ 1+3 ๋์
/ arr[1 , 3 , 4]
1+3+4 = 8
#include <stdio.h>
main() {
char* p = "KOREA";
printf("%s\n", p);
printf("%s\n", p + 3);
printf("%c\n", *p);
printf("%c\n", *(p + 3));
printf("%c\n", *p + 2);
}
%s
๋ ๋(\0
) ๋ฌธ์๊ฐ ๋์ฌ ๋๊น์ง ๋ฌธ์์ด์ ์ถ๋ ฅํ๋ค.[K , O , R , E , A , \0]
P
: ๋ฌธ์ํ ํฌ์ธํฐ ๋ณ์ p ์ ์์์ฃผ์๊ฐ -> KOREAP + 3
: p์ ์์์ฃผ์๊ฐ์ 3๋ฒ์งธ ๋ค์ ์ฃผ์ -> E
์ ์์ ์ฃผ์๊ฐ -> EA*P
: p ์ ์์์ฃผ์๊ฐ์ ์ค์ ๊ฐ -> K*(P + 3)
: P์ ์์์ฃผ์๊ฐ์ 3๋ฒ์งธ ๋ค์ ์ฃผ์์ ์ค์ ๊ฐ -> E*P + 2
: P์ ์์ ์ฃผ์์ ์ค์ ๊ฐ K(ASCII ์ฝ๋ 75) + 2 => 77 => MKOREA
EA
K
E
M