int main(void) {
int i = 30; // i๋ &i(์ง์ง ์ฃผ์)์ ๋ํ ๋ณ์นญ(๋ณ๋ช
)์ด๋ค. '๋ฑ
๋ฑ
์ฌ๊ฑฐ๋ฆฌ'์ ๊ฐ์.
int i2 = 40;
int* p = &i; // p๋ **'์ฃผ์'**๋ฅผ ๋ด๋ ๊ณต๊ฐ. i์ ์ง์ง ์ฃผ์๊ฐ p๋ก ๋ค์ด๊ฐ๋ค.
*p = 50; // *๋ **'๊ฐ๋ค'**๋ผ๋ ๋ป. *p ๋ก ๊ฐ๋ฉด 30์ง๋ฆฌ ๊ณต๊ฐ์ด ๋์จ๋ค. ์ด๋ฅผ 50์ผ๋ก ๋ฐ๊ฟ์ฃผ๋..
printf("%ld\n", (long)&i); // **i์ ์ฃผ์ : 140721167407256**
printf("%ld\n", (long)&i2); // **i2์ ์ฃผ์ : 140721167407252**
printf("i : %d\n", i);
// ์ถ๋ ฅ => i : 50
return 0;
}
๐ค printf("%ld\n", (long)&i);
์ ๊ฐ์ด ์ ์ด๋ ๊ฒ ํด๊น?
cf). RAM์ ์ ์ฅ ๋จ์๋ byte
์ด๋ค. (cpu์ register ๋ word ๋จ์)
cf). i์ ์ฃผ์๋ ์์ ์ฃผ์๊ฐ ์ ๊ฒ์ด์ง 4byte ๊ณต๊ฐ์ ์ฌ์ฉํ๋ฏ๋ก , ์ค์ ๋ก๋ 6~9
๊น์ง ์ฌ์ฉ.
i2์ ์ฃผ์ ์ญ์ ์์ ์ฃผ์๊ฐ ์ ๊ฒ์ด์ง 4byte ๊ณต๊ฐ์ ์ฌ์ฉํ๋ฏ๋ก ,์ค์ ๋ก๋ 2~5
๊น์ง ์ฌ์ฉ.
&i
์ ๋ํด !&i = 30;
// ์๋ชป๋ ๋ฌธ๋ฒ.*&i = 50;
// i ์ ์ค์ ์ฃผ์๋ก ๊ฐ๋ค!! i = 50;
๊ณผ ์ฐจ์ด๊ฐ ์๋ค.int* p = &i;
*p = 70;
*&i = 70;
โ ์ด๋ ๊ฒ ์ฃผ์ ๋ณ์์ ๋ด์ง ์๊ณ ํ ๋ฒ์ ๊ฐ๋ ๋จ.i = 70;
๐ค ์คํํ ๋๋ง๋ค ์ฃผ์ ๊ฐ์ด ์กฐ๊ธ์ฉ ๋ฌ๋ผ์ง๋ ์ด์ ?
โ ์ด์์ฒด์ ๊ฐ ํ๋ก์ธ์ค์ ํ ๋นํ ๋ฉ๋ชจ๋ฆฌ๋ โ๊ฐ์์ RAMโ์ด๋ค.
#include <stdio.h>
void sol() {
char a = 1;
char b = 5;
char* p; // p๋ ํฌ์ธํฐ!
// ์์ ๊ฐ๋ฅ์ง์ญ ์์
p = &a;
*p = 2;
p = &a - 1; // p๋ a์ ์ฃผ์์์ -1 ์ ํ, b์ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํจ๋ค. a์ ์ฃผ์๊ฐ ๋ ํฌ๋ค. (์คํ ๋งจ ์๋ ๋๋จ์์๋ถํฐ ์ ์ฌ)
// p--; ๋ผ ํด์ค๋ ๋๊ฐ๋ค. *(p-1) = 10; ์ด๋ผ ํด์ค๋ ๋๊ฐ๋ค.
// p ๊ฐ ๊ฐ์ง๋ ๋ณ์์ ์๋ฃํ์ ๋ฐ๋ผ์, -1์ ํฌ๊ธฐ๊ฐ ๋ฐ๋๋ค. -> int* p ์ด๋ฉด, -1์ด 4byte์.
*p = 10;
// ์์ ๊ฐ๋ฅ์ง์ญ ๋
printf("== ๋ณ์์ ๊ฐ ==\n");
printf("a : %d\n", a);
// ์ถ๋ ฅ => a : 2
printf("b : %d\n", b);
// ์ถ๋ ฅ => b : 10
}
์ฌ์ฉ์๊ฐ ํค๋ณด๋๋ก ๋ช ๋ น์ด ์ ๋ ฅ โ โ์โ์ ๊ฐ์ด๋ฐ์์ ํต์ญ๊ด ์ญํ โ ์ด์์ฒด์ (๋ฆฌ๋ ์ค)์๊ฒ ์ ๋ฌ
( ์๋์ฐ์์ ์ฐ์ตํ ์ ์๋ BASH ์ ํ๊ฒฝ์ด ์๋ค. )
ls -l
โ ํ์ผ ์ ๋ณด ์์ธํ ๋์ด. ll
์ด๋ผ๊ณ ํด๋ ๋๋ค.ls -alh
โ ์จ๊นํ์ผ๊น์ง ๋ชจ์กฐ๋ฆฌ ์์ธํ๊ฒ ๋ณด์ฌ์ค (all list human)pwd
โ ํ์ฌ ํด๋ ๊ฒฝ๋ก ์ถ๋ ฅ.-rw-rโrโ
โฆ โ ํ์ผ์ด๋ผ๋ ๋ป. ์์ -
๊ฐ ์๋ค.drwxr-xr-x
โฆ โ ํด๋๋ผ๋ ๋ป. ์์ d
๊ฐ ์๋ค.clear
, ctrl + l
โ ์์
์ฐฝ ๋น์ฐ๊ธฐshift + delete
โ ํด์งํต ๊ฑฐ์น์ง ์๊ณ ์์ ์ญ์ .explorer .
โ Git Bash ์์ ํด๋น ํ์๊ธฐ ์ฐฝ ์ด๊ธฐ.history
โ ๋ด๊ฐ ์ง๊ธ๊น์ง ์
๋ ฅํ๋ ๋ช
๋ น์ด ๋ด์ญ๋คtouch .test
โ ์จ๊น ํ์ผ ๋ง๋ค๊ธฐ. ls
์
๋ ฅํด๋ ์ ๋์ด.ls -al
โ ์จ๊น ํ์ผ๊น์ง ๋ณด๊ธฐ. al ์ all ์ด๋ผ๋ ๋ป. ํ์ฌ ํด๋ ์ ๋ณด์ ์์ ํด๋๊น์ง ๋ณด์ฌ์ค.../
์ ํ์ฌ ๋๋ ํ ๋ฆฌ ../
์ ์์ ๋๋ ํ ๋ฆฌ)ls
โ ls . ์ด ์๋ต๋ ๊ฒ์ด๋ค. ์ฆ, ํ์ฌ ์์น์์์ ํ์ผ ๋ฆฌ์คํธ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ฒ.ls a
โ ๋ฐ๋ผ์ ์ด๋ ๊ฒ ์ฐ๋ฉด, a ์์ ์๋ ํ์ผ ๋ฆฌ์คํธ๋ฅผ ๋ณด์ฌ๋ฌ๋ผ๋ ๊ฒ์.start .
โ ctrl + enter
โ ํ์ฌ ์์น๊ฐ ํ์๊ธฐ์์ ์ด๋ฆผ.whoami
โ ์ฌ์ฉ์๊ฐ ๋๊ตฌ์ธ์ง ์๋ ค์ค.cd ~
โ ๋ด ํ ํด๋๋ก ์ด๋.echo ~
โ ํ์ฌ ์ฌ์ฉ์์ ํด๋ ๊ฒฝ๋ก๋ฅผ ํ๋ฉด์ ์ถ๋ ฅํ๋ค.rm .a
๋ผ๊ณ ํด๋๋ช
์ ์ฒด ๋ค ์
๋ ฅํด์ค์ ์ง์ด๋ค.rmdir a/b/c/d
โ rmdir a/b/c
โ rmdir a/b
โฆ ์ด๋ฐ ์์ผ๋ก ํด์ผ ํจ.rm -rf *
(recursive force) ๊ทธ๋ฅ ๊ฐ์ ๋ก ๋ฐ์ด๋ฒ๋ฆฌ๋ ๊ฒ. recursive : ์ฌ๊ท์ ์ผ๋ก, ์์ ์์ ์์โฆrm -rf a
๋ผ๊ณ ํ๋ฉด, ํด๋ ๊ตฌ์กฐ๊ฐ a/b/c/d
์ด๋ ๊ฒ ์์ด๋ ํ ๋ฒ์ ์ง์์ง.mkdir a/b/c/d
์ด๋ ๊ฒ ํ๋ฉด ์๋๋ค.mkdir a
โ mkdr a/b
โ mkdir a/b/c
โฆ ์ด๋ฐ ์์ผ๋ก ํด์ผ ํจ.mkdir -p a/b/c/d
โ a/b/c/d ํ ๋ฒ์ ๋ง๋ค์ด์ค๋ค./
root ๋๋ ํ ๋ฆฌ๋ผ๊ณ ํ๋ค.~
// cd ~
~/Desktop/work
์ด๋ฐ ์์ผ๋ก ํํ๋ ๋, ~
์ ์ฌ์ฉ์ ์ง์ด๋ผ๋ ๋ป. (/c/Users/ehddks)ctrl + c
โ ์ด์ํ ๊ณณ์ ๋น ์ ธ์ ๋ชป ๋์จ๋ค. ์ ์ง, ์ทจ์๋ผ๋ ๋ป.ctrl + Insert
โ ๋ณต์ฌshift + Insert
โ ๋ถ์ฌ๋ฃ๊ธฐcd /c/Users
โ root ๋๋ ํ ๋ฆฌ ์ผ๋จ ๋ค์ด๊ฐ๊ณ , ๊ทธ ๋ค์ ๊ทธ ์์ ์๋ c, Users ๋ก ๋ค์ด๊ฐ๋ค. (์ ๋๊ฒฝ๋ก)cd ./Users
โ ํ์ฌ ์์น(cํด๋) ๊ธฐ์ค์์, hello ํด๋ ์์ผ๋ก. (์๋๊ฒฝ๋ก)cd Users
โ ./ ์๋ตํด๋ ๋จ.echo ์๋
ํ์ธ์
echo โ์๋
ํ์ธ์โ
โ ๋ ๋ค ๋๊ฐ์ ๊ฒฐ๊ณผ.
echo \โ์๋
\โํ์ธ์
โ โ์๋
โํ์ธ์ ์ถ๋ ฅ.
๋ฆฌ๋ค์ด๋ ํ
ls \ > a.txt
โ >
๋ฅผ ์ฌ์ฉํ๋ฉด, a.txt์ ๊ฒฐ๊ณผ๋ฅผ ๋ด๋๋ค. ์ด๋ฅผ โ๋ฆฌ๋ค์ด๋ ํ
โ ์ด๋ผ๊ณ ํจ.
explorer .
๋ก ๋๋ ํ ๋ฆฌ ๋ค์ด๊ฐ์ a.txt ํ์ธํด๋ณด์.
- echo โ์๋
โ > a.txt
โ ๋ฎ์ด์ฐ๊ธฐ
- echo โ์๋
โ >> a.txt
โ ๋ฎ์ด์ฐ์ง ์๊ณ ๊ธฐ์กด ๋ด์ฉ์ ์ถ๊ฐ.
- echo -n โ์๋
โ >> a.txt
โ \n ์
๋ ฅ ์์ด ์ถ๊ฐ.
echo โ์๋
โ > a.txt
โ ๊ธฐ๋ณธ์ ์ผ๋ก ์๋
\n ์ด ๋ค์ด๊ฐ๋ ๊ฒ์ด๋ค.
- echo -en โ์๋
\nํ์ธ์โ >> a.txt
โ \n ์ด ์ ์ฉ๋๊ฒ ํ๋ ค๋ฉด -en ์ ์ฌ์ฉํ๋ค.
cat a.txt โ ๋ฌธ์ ๋ด์ฉ ๋ฐ๋ก ํ์ธํ๊ธฐ.
๐ป echo ๋ง์ผ๋ก song.txt ๋ง๋ค์ด๋ณด๊ธฐ(์ํ๋ ๋
ธ๋ ๊ฐ์ฌ)
cat song.txt ๋ก ํ์ธ!
rm -rf *
๋ก ํ์ผ ๋ชจ๋ ์ญ์
ls / 1> result.txt
โ 1์ ํ์ค์
๋ ฅ์ ์๋ฏธํจ.
abc > result.txt
โ ์ด๊ฒ์ ์๋ชป๋ ๋ฌธ๋ฒ. ๋ฐ๋ผ์ ํ์ค์ค๋ฅ โ2โ๋ก ๋ค์ด๊ฐ.
abc 1>> result.txt 2>>error.txt
โ ํ์ค์ถ๋ ฅ์ result๋ก, ํ์ค์๋ฌ๋ error ๋ก
mkdir a b c d e f g โฆ. z
ll | less
โ ์ ๊ฒ , ์กฐ๊ธ์ฉ ๋ณด์ฌ์ค๋ค.
โ ll ์ ์ถ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ less ํํ
์ฃผ๊ณ , less๋ ์กฐ๊ธ์ฉ ๋ณด์ฌ์ค๋ค.
git init
์
๋ ฅ.echo ".DS_Store" > .gitignore
โ .DS_Store ๋ฅผ .gitignore ํ์ผ์ ํ
์คํธ๋ก ์ถ๊ฐํ๊ธฐ.cat .gitignore
git status
โgit add
โ๋ค์ ๋นผ๋ ค๋ฉด?
git rm โcached .gitignore
โgit commit -m โfirst commitโ
โgit config [user.name](http://user.name)
โgit ์ commit ์ git ์ user.name ๊ณผ user.email ์ ๋ฌผ์ด๋ณธ๋ค. ๋ณดํต์ ๊นํ๋ธ ์์ด๋ ์ ์ด๋ฉ์ผ์ ์ฌ์ฉํ๋ค.
global ์ ์ฐ์ง ์๊ณ ์ ๋ ฅํ๋ฉด, .init ์ด๋ผ๋ ๋ก์ปฌ์ ์ฅ์๋ฅผ ๋ง๋ค ๋๋ง๋ค ์ ๋ ฅํด์ค์ผ ํ๋ค.
git config โglobal [user.name](http://user.name)
โ๊นํ๋ธ ์์ด๋โ
git config โglobal [user.email](http://user.email)
โ๊นํ๋ธ ์ด๋ฉ์ผโ
git config โglobal [user.name](http://user.name)
โ ํ์ธํ๊ธฐ.
git config โglobal [user.email](http://user.email)
โ ํ์ธํ๊ธฐ.
git config โglobal โunset-all user.name
git config โglobal โunset-all user.email
git add .
โgit checkout -f .
โ ํ์ผ ์์ ํ, commit ์ ์ด๋ผ๋ฉด, ๋ง์ง๋ง commit ์์ ์ผ๋ก ๋์๊ฐ ์ ์๋ค!git checkout master
โ ๋ค์ ์ต์ ์ํ๋ก ๋์์จ๋ค!ctrl + insert
๋ก ๋ณต์ฌ,shift + insert
๋ก ๋ถ์ฌ๋ฃ๊ธฐ ๊ฐ๋ฅ.vim a.txt โ ํธ์ง ๋ชจ๋๋ก!
a
: INSERT ๋ชจ๋. ์ด ๋ ๋ฌธ์ ํธ์ง ๊ฐ๋ฅํ๋ค.esc
: ๋น ์ ธ๋๊ฐ๊ธฐ, ๋ฉ๋ด๋ชจ๋๋ก ๋์๊ฐ.shift :
โ ์ต์
์ ํ ๊ฐ๋ฅa.txt.swp (์ค์ํ์ผ)
์ด ๋จ์์๋ ์ํ์์ ๋ซ์ด๋ฒ๋ฆฌ๋ฉด?
D
๋ก ์ด์ด๋ณด๊ธฐ.:wq!
๋ก ๋น ์ ธ๋๊ฐ๋ฉด, swp ํ์ผ ์ญ์ ๋๊ณ ํ์ผ์ ์ ์ฅ๋จ.rm -rf a.txt.swp
๋ฐ์ด๋ฒ๋ฆฌ๊ธฐ์ ๊ตญ๊ฐ ์ค์ต โ song.txt ์ 1์ ์ ์ฅ.
cat song.txt ๋ก ํ์ธํด๋ณด์.
ํธํ๊ฒ ์ญ์ ํ๊ธฐ!
dd
โ ํด๋น ์ปค์ ์์น 1์ค ์ญ์ d ๊พน ๋๋ฅด๊ธฐ
โ ๋ชจ๋ ์ญ์ .echo โ์๋ ํ์ธ์โ > a.txt โ ํ์ผ ์์์ ์ถ๋ ฅํด๋ผ
echo โ1234โ >> a.txt โ ๋ด์ฉ ๋ง๋ถ์ด๊ธฐ!!
echo -n โ567โ >> a.txt โ ๊ฐํ๋ฌธ์ ๋นผ๊ณ ๊ทธ๋ฅ ์ด์ด ๋ถ์ด๊ธฐ.