LIKELION๐Ÿฆ TIL(2022-06-27)

Ryuยท2022๋…„ 6์›” 30์ผ
0

๋ฉ‹์Ÿ์ด ์‚ฌ์ž์ฒ˜๋Ÿผ

๋ชฉ๋ก ๋ณด๊ธฐ
9/12
post-thumbnail

ํฌ์ธํ„ฐ

#include <stdio.h>

// ์ˆ˜์ •๊ฐ€๋Šฅ์ง€์—ญ ์‹œ์ž‘
void change() {
  int num;
  *(&num + 11) = 50;
}
// ์ˆ˜์ •๊ฐ€๋Šฅ์ง€์—ญ ๋

int main(void) {
  int x = 20;
  printf("change ํ•จ์ˆ˜ ํ˜ธ์ถœํ•˜๊ธฐ ์ „์˜ x : %d\n", x);
  change();  
  printf("change ํ•จ์ˆ˜ ํ˜ธ์ถœํ•œ ํ›„์˜ x : %d\n", x);
  // ์ถœ๋ ฅ => change ํ•จ์ˆ˜ ํ˜ธ์ถœํ•œ ํ›„์˜ x : 50

  return 0;
}
  • main() ํ•จ์ˆ˜๊ฐ€ ์Šคํƒ์— ์Œ“์ด๊ณ , change() ํ•จ์ˆ˜๊ฐ€ ์Šคํƒ์— ์Œ“์ธ๋‹ค.
    • main() ํ•จ์ˆ˜๋Š” 4byte, change() ํ•จ์ˆ˜๋„ 4byte.
    • main() ํ•จ์ˆ˜์™€ change() ํ•จ์ˆ˜ ์ฃผ์†Œ ๊ฑฐ๋ฆฌ ์ฐจ์ด๋Š” ์–ผ๋งˆ ๋‚˜์ง€ ์•Š๋Š”๋‹ค. ์ด๋ฅผ ์ดํ•ดํ•˜๊ณ  ํ’€์–ด์•ผ ํ•จ.
    • &x , x์˜ ์‹ค์ œ ์ฃผ์†Œ๋Š” 1407.....640
      &num, num์˜ ์‹ค์ œ ์ฃผ์†Œ๋Š” 1407.....644 ๋ผ๊ณ ํ•˜๋ฉด, ์‹ค์ œ๋กœ๋Š” 4byte(๋ฐฉ1๊ฐœ)๊ฐ€ ์ฐจ์ด๋‚˜๋Š” ๊ฒƒ์ด๋‹ค.
      ๋”ฐ๋ผ์„œ, *(1407.....640) = 50; ์ด๋ผ๊ณ  ํ•ด์ฃผ๋ฉด, x = 50; ์ด๋ผ๊ณ  ํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•˜๋‹ค.
  • ๋žœ๋คํ•˜๊ฒŒ, 4byte ์ด์ƒ์ด ์ฐจ์ด๋‚  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ ์ฐจ์ด ๋‚˜๋Š” ๊ฒƒ์„ ๋ณด๋ฉด์„œ ์กฐ์ •ํ•ด์•ผ ํ•œ๋‹ค!!
    ์šด์˜์ฒด์ œ์—์„œ ์ƒํ™ฉ์— ๋งž๊ฒŒ ๊ณ„์†ํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋‚˜๋ˆ ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹คโ€ฆ
  • ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” , *(&num + โ€ฆ) num ์ฃผ์†Œ๊ฐ’์— ๋”ํ•ด์ฃผ๋Š”๊ฒŒ ๋งž๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ ์ƒ main ํ•จ์ˆ˜ ์œ„์— change ํ•จ์ˆ˜๊ฐ€ ์Œ“์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค !!!

๋‹ค์ค‘ํฌ์ธํ„ฐ

int a = 10;
int* pa = &a;  // a(int) ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ณ€์ˆ˜.
int** ppa = &pa;  // pa(int*)๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ณ€์ˆ˜.

/*
ppa => pa ์ฃผ์†Œ.
pa => a์˜ ์ฃผ์†Œ
a => 10์„ ๊ฐ€์ง„๋‹ค.
*/
#include <stdio.h>

void change(int** num) {
  
  **num = 50;
  // *p = 50;
  // x = 50;  ๋ชจ๋‘ ๋™์ผํ•˜๋‹ค!!
  
}

int main(void) {
  int x = 20;
  int* p = &x;

  printf("change ํ•จ์ˆ˜ ํ˜ธ์ถœํ•˜๊ธฐ ์ „์˜ x : %d\n", x);

  change(&p);

  printf("change ํ•จ์ˆ˜ ํ˜ธ์ถœํ•œ ํ›„์˜ x : %d\n", x);
  • int** ppa โ‡’ ppa๋Š” ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ณ€์ˆ˜๋‹ค. 8byte ์งœ๋ฆฌ๋ฅผ. -
  • a == *pa ? โ‡’ true.
    a == *(&a) ? โ‡’ true.
    a == **ppa ? โ†’ *pa โ†’ a โ‡’ true.
  • num; ์€ ๊ฒฐ๊ตญ, *num ์œผ๋กœ ํ•œ ๋ฒˆ ์ด๋™ํ•˜๊ณ , num์œผ๋กœ 2๋ฒˆ ์ด๋™ํ•˜๋Š” ๊ฐœ๋….

ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋ฅผ 5์ค„ ์ด์ƒ์œผ๋กœ ์„œ์ˆ .

๊ฐ์ฒด ๋ณ€์ˆ˜์— ์™œ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ์ €์žฅํ•˜๋‚˜์š” ?

๋‚ด ํ’€์ด

  • ์ง€์—ญ๋ณ€์ˆ˜๋ฅผ ์ฃผ์†Œ๊ฐ’์œผ๋กœ ์ ‘๊ทผํ•ด์„œ ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ.
    ๊ฐ’ ์ˆ˜์ • ์‹œ, ๋ณ€์ˆ˜์—๋งŒ ์˜์กดํ•˜์ง€ ์•Š๊ณ  ์ฃผ์†Œ๊ฐ’์— ์ง์ ‘ ์ ‘๊ทผํ•ด ๋ณ€๊ฒฝํ•จ์œผ๋กœ์จ ํšจ์œจ์ ์œผ๋กœ ๊ฐ’ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ฐ•์‚ฌ๋‹˜ ํ’€์ด

  • ์„ค๋ช…์„ ์œ„ํ•œ ์„ค๋ช….
    • ๋ณธ์งˆ : ๊ณต๊ฐ„์€ ์›€์ง์ผ ์ˆ˜ ์—†๋‹ค !
      ํ™๊ธธ๋™, ์žฌ์‚ฐ 500์กฐ - ๋„๊ณก๋™ ๋•… ์ „๋ถ€ ๋งค์ž….
      ์ž„๊บฝ์ •, โ€œ๊ธธ๋™์•„, ๋‚˜ ํ˜„์žฌ ์บ˜๋ฆฌํฌ๋‹ˆ์•„์— ๊ฑฐ์ฃผํ•˜๋Š”๋ฐ, ๋„ˆ๊ฐ€ ๋•…์ด ๋งŽ๋‹ค๋ฉฐ?, ๋‚˜ ๋•… 50ํ‰๋งŒ ๋นŒ๋ ค์ค„๋ž˜?โ€
      ํ™๊ธธ๋™, โ€œ์ง์ ‘ ์™€์„œ ์ด์šฉํ•ด. ๋„๊ณก๋™ ์ผ๋ถ€๋ถ„์ด๋ผ๋„ ๊ทธ ์ž์ฒด๋ฅผ ์–ด๋–ป๊ฒŒ ๋ฏธ๊ตญ์œผ๋กœ ๋นŒ๋ ค์ฃผ๊ฒ ๋‹ˆ.โ€
  • ๋ฉด์ ‘์šฉ ์„ค๋ช…
    • ํฐ ๋ฐ์ดํ„ฐ๋“ค์„ โ€˜๊ณต์œ โ€™ํ•˜์—ฌ, ๊ณต๊ฐ„ ๋‚ญ๋น„๋ฅผ ์ค„์ž…๋‹ˆ๋‹ค.
    • ๊ณต์œ ๋ฅผ ํ•˜๋ฉด, ๊ณต๊ฐ„์„ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์ด์ ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
      ์ง์ ‘ ์ฃผ์†Œ๊ฐ’์— ์ ‘๊ทผํ•ด์„œ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ๊ต‰์žฅํžˆ ๋น ๋ฅด๋‹ค.
    • ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ง์ ‘ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ .
      โ†’ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ’์„ ๋‹ค๋ฃธ์œผ๋กœ์จ, ์†๋„ ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์„ ๋Œ์–ด์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋‹ค.

ํฌ์ธํ„ฐ ์ดํ•ดํ–ˆ๋‚˜?

  • (&b + 1) ์˜๋ฏธํ•˜๋Š”๊ฒŒ ๋ฌด์—‡์ผ๊นŒ ? ?
    int a = 10;
    int b = 50;
    int p = &a;
    (&b + 1) = 60;

=> &b + 1 ์€ ๋ณ€์ˆ˜ a ์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค! ๋ฌผ๋ก  ๋ฐ”๋€” ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ์ผ๋‹จ a๊ฐ€ ์Šคํƒ ๋” โ€˜์œ„โ€™์ชฝ์— ์Œ“์ด๋‹ˆ๊นŒ โ€ฆ

Git

  • git fetch + git merge = git pull
    (fetch ๋ž€, ์›๊ฒฉ์ €์žฅ์†Œ(github)์—์„œ local repository ๋กœ ์ตœ์‹ ํ™” ํ•ด์˜ค๋Š” ๊ฒƒ.
  • diff ๋Š” ๊ทธ๋ƒฅ ๋น„๊ต๋งŒ. ์•„๋ฌด๋Ÿฐ ์˜ํ–ฅ ๋ฏธ์น˜์ง€ ์•Š๋Š”๋‹ค.
  • git checkout
    • HEAD๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋…€์„์„ ๋ฐ”๊พผ๋‹ค.
      int* HEAD;
      int a;
      int b;
      git checkout a; // HEAD = &a;

Git ๋‚ด๋ถ€ ๋ถ„์„ํ•ด๋ณด๊ธฐ

  • gistory ํ”„๋กœ๊ทธ๋žจ
    ๋ช…๋ น์–ด ์น  ๋•Œ๋งˆ๋‹ค ๋ณด์—ฌ์คŒ.
    gistory .git

  • 3.9 ์„ค์น˜

  • disable limit
    3.9 ์„ค์น˜ํŒŒ์ผ ๋‹ค์‹œ ์‹คํ–‰
    -modify
    -add ํ™˜๊ฒฝ๋ณ€์ˆ˜

  • pip install gistory
    gistory .git

  • Hello โ‡’ sha1 ๋กœ ํ•ด์‹ฑ, ์•”ํ˜ธํ™”.

์™œ echo Hello > b.txt , git add . ํ–ˆ๋Š”๋ฐ ์ƒˆ๋กœ ์•ˆ์ƒ๊ธธ๊นŒ ?

Git : ๋งŒ์•ฝ, ๊ธฐ์กด์— Hello ํ•ด์‹ฑํ•œ ๊ฐ’์ด ์žˆ๋‹ค๋ฉด, ๋˜‘๊ฐ™์€ ๋‚ด์šฉ์„ ์ƒˆ๋กœ ์ƒ์„ฑํ•˜์ง€ ์•Š๋Š”๋‹ค !
์ฆ‰, ๋‚ด์šฉ โ†’ sha1 โ†’ ํŠน์ •๊ธธ์ด์˜ ์•”ํ˜ธ๋ฌธ(๊ธธ์ด ๋ชจ๋‘ ๋˜‘๊ฐ™๋‹ค.)

โ‡’ Git ์€ ์ตœ๋Œ€ํ•œ ์ค‘๋ณต๋˜๋Š” ๋‚ด์šฉ์„ ์ค„์ด๊ธฐ ์œ„ํ•ด์„œ ์ด๋ ‡๊ฒŒ ํ•œ๋‹ค.

์™œ ํŒŒ์ผ๋ช…์„ e9~ ์ด๋Ÿฐ์‹์œผ๋กœ ํ•˜๋ฉด๋˜๋Š”๋ฐ, e9/์•ˆ์— ์ €์žฅํ• ๊นŒ

์•ž์— ๋‘๊ธ€์ž e9 ์‹์œผ๋กœ ๋‘๋ฉด, objects ํด๋”๊ฐ€ ์ฐจ๋Š” ์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค?
โ†’ ๋ฆฌ๋ˆ…์Šค, ์œˆ๋„์šฐ ํด๋”๋Š” ํŒŒ์ผ์ด๋‚˜ ์„œ๋ธŒํด๋”์˜ ๊ฐœ์ˆ˜๊ฐ€ 1๋งŒ ๊ฐœ ์ •๋„๋กœ ์ œํ•œ. ์ดˆ๊ณผํ•˜๋ฉด ๋Š๋ ค์ง..

์ฝ”๋“œ, commit ์ •๋ณด๋„ ๋ชจ๋‘ ์ด๊ณณ์— ์ €์žฅ. โ†’ ์ด๊ณณ์— ์—„์ฒญ๋‚˜๊ฒŒ ๋งŽ์€ ํŒŒ์ผ ์ €์žฅ.

Git ๋‚ด๋ถ€ ๊ตฌ์กฐ

  • commit ์€ index(staging area) ์˜ ๋ณต์‚ฌ๋ณธ์ด ์ƒ๊ธฐ๋Š” ๊ฒƒ. (index๋Š” ๋ฐ”๋€Œ์ง€ ์•Š๋Š”๋‹ค.)
    index ๋ณต์‚ฌ๋ณธ์€ TREE ํ˜•ํƒœ๋กœ ์ƒ์„ฑ.
    git add ํ–ˆ์„ ๋•Œ, local repostiory ์—๋„ ํŒŒ์ผ์ด ์ถ”๊ฐ€๋œ๋‹ค.
  • commit ๋ฉ”์‹œ์ง€๋Š” index ๋ณต์‚ฌ๋ณธ(Tree ํ˜•ํƒœ)์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค.
    HEAD๋Š” master ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ , master๋Š” commit ๋ฉ”์‹œ์ง€๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹คโ€ฆ
    ์š”์•ฝ : HEAD โ†’ master โ†’ commit 1 โ†’ Tree 1(Index์˜ ๋ณต์‚ฌ๋ณธ)
profile
Strengthen the core.

0๊ฐœ์˜ ๋Œ“๊ธ€