ํฌ์ธํฐ์ ๋ฐฐ์ด ์ด๋ฆ ๊ฐ์ ๊ธฐ๋ณธ์ ์ธ ์ฐจ์ด
p3 = p3 + 1; //p3์ด ํฌ์ธํฐ๋ฉด ๋ง๊ณ , ๋ฐฐ์ด ์ด๋ฆ์ด๋ฉด ํ๋ฆผ
๋ฐฐ์ด ์ด๋ฆ์ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์์ง๋ง, ํฌ์ธํฐ๋ ๋ณ์์ด๊ธฐ ๋๋ฌธ์ ๊ฐ ๋ณ๊ฒฝ ๊ฐ๋ฅ
p3์ 1์ ๋ํ๋ฉด ํฌ์ธํฐ๊ฐ ์ฒซ ๋ฒ์งธ ์์๊ฐ ์๋๋ผ ๋ ๋ฒ์งธ ์์๋ฅผ ์ง์ํ๊ฒ ๋จ.
ํฌ์ธํฐ, ๋ฐฐ์ด, ํฌ์ธํฐ ์ฐ์ฐ
ํฌ์ธํฐ ๋ณ์์ 1์ ๋ํ๋ฉด ๊ฐ์ด ๊ทธ ํฌ์ธํฐ๊ฐ ์ง์ํ๋ ๋ฐ์ดํฐ ํ์ ๋ฐ์ดํธ ์๋งํผ ์ฆ๊ฐํจ
double wages[3]={10000.0,20000.0,30000.0}
double * pw = wages;
C++์ ๋ฐฐ์ด ์ด๋ฆ์ ๊ทธ ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์์์ ์ฃผ์๋ก ์๊ฐํจ
pw๋ฅผ doubleํ์ ์ง์ํ๋ ํฌ์ธํฐ๋ก ์ง์ ํ ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์์(์ฃผ์) wages๋ก ์ด๊ธฐํ
์ฆ, wages=&wages[0]=๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์์์ ์ฃผ์
pw=pw+1;
cout<<*pw //20000.0 ์ถ๋ ฅ
short stacks[3] = {3,2,1};
๋ฐฐ์ด ํ๊ธฐ stacks[1]๊ณผ *(stacks+1)์ ๋๋ํ๊ฒ ์ทจ๊ธํจ.
๋๋ถ๋ถ์ ๊ฒฝ์ฐ, ๋ฐฐ์ด ์ด๋ฆ์ด๋ ํฌ์ธํฐ ์ด๋ฆ์ ์ฃผ์๋ฅผ ๋ํ๋
์ฐจ์ด์
-
๋ฐฐ์ด ์ด๋ฆ์ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋ ์์์ธ ๋ฐ๋ฉด์ ํฌ์ธํฐ๋ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋ ๋ณ์๋ผ๋ ์ฌ์ค
-
๋ฐฐ์ด ์ด๋ฆ์ sizeof ์ฐ์ฐ์ ์ฌ์ฉ ์ : ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ ์ป์ด์ง, ํฌ์ธํฐ์ sizeof ์ฐ์ฐ์ ์ฌ์ฉ ์ : ํฌ์ธํฐ์ ํฌ๊ธฐ๊ฐ ์ป์ด์ง
๋ฐฐ์ด์ ์ฃผ์
short tell[10];
cout<<tell<<endl; //์ฒซ ๋ฒ์งธ ์์์ ์ฃผ์(&tell[0], ๋ฐฐ์ด ์ด๋ฆ)
cout<<&tell<<endl; //์ ์ฒด ๋ฐฐ์ด์ ์ฃผ์
ํฌ์ธํฐ์ ๋ฌธ์์ด
char flower[10] = "rose";
cout<<flower<<"s are red\n";
flower ๋ฌธ์ r์ด ๋ค์ด์๋ charํ ์์์ ์ฃผ์. cout ๊ฐ์ฒด๋ flower์ ์๋ ๋ฌธ์(r)๋ฅผ ์ถ๋ ฅํ ํ, ๋ ๋ฌธ์(\0)๋ฅผ ๋ง๋ ๋๊น์ง ๊ณ์ ๋ฌธ์๋ฅผ ์ถ๋ ฅํจ
flower๊ฐ ๋ฐฐ์ด ์ด๋ฆ์ด ์๋, charํ์ ์ฃผ์์ฒ๋ผ ํ๋ํจ
"s are red\n" ํฐ ๋ฐ์ดํ๋ก ๋๋ฌ์ธ์ธ ๋ฌธ์์ด์ ๊ทธ ๋ฌธ์์ด์ ์ฒซ ๋ฒ์งธ ๋ฌธ์์ ์ฃผ์๋ฅผ ๋ํ๋
charํ์ ๋ฐฐ์ด์ ์ ์ฅ๋ ๋ฌธ์์ด, ํฐ ๋ฐ์ดํ๋ก ๋๋ฌ์ธ์ธ ๋ฌธ์์ด ์์, ํฌ์ธํฐ๋ก ์ฐธ์กฐ๋๋ ๋ฌธ์์ด์ด ๋ชจ๋ ๋๋ฑํ๊ฒ ์ทจ๊ธ
-> charํ์ ๋ฐฐ์ด ์ด๋ฆ, charํ์ ์ง์ํ๋ ํฌ์ธํฐ, ํฐ๋ฐ์ดํ๋ก ๋๋ฌ์ธ์ธ ๋ฌธ์์ด ์ํ๋ ๋ชจ๋ ๋ฌธ์์ด์ ์ฒซ ๋ฒ์งธ ์ฃผ์๋ก ํด์๋จ
const char * bird = "wren";
์ด ๊ตฌ๋ฌธ์ "wren"์ ์ฃผ์๋ฅผ ํฌ์ธํฐ bird์ ๋์
ํจ.
๋ฌธ์์ด์ ์
๋ ฅํ ๋ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ๋ฒ์ด๋์ง ์์ผ๋ฉด, ๋ฐฐ์ด์ ์์ ํ๊ฒ ์ฌ์ฉ ๊ฐ๋ฅ.
But, ํฌ์ธํฐ๋ฅผ ๋ฌธ์์ด ์
๋ ฅ์ ์ฌ์ฉ ์ ๋ฌธ์ ๋ฐ์ ๊ฐ๋ฅ ์์
-
์ด๋ค ์ปดํ์ผ๋ฌ๋ ๋ฌธ์์ด ์์๋ฅผ ์ฝ๊ธฐ ์ ์ฉ ์์๋ก ์ทจ๊ธํจ ๋ฐ๋ผ์ ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋กํ๋ ค๊ณ ์๋ํ๋ฉด, ์๋ฌ ๋ฐ์
-
์ด๋ค ์ปดํ์ผ๋ฌ๋ ๋์ผํ ๋ฌธ์์ด ์์๊ฐ ํ๋ก๊ทธ๋จ์ ์ฌ๋ฌ ๋ฒ ๋ํ๋ ๋ ๊ทธ๊ฒ๋ค์ ํ๋์ ๋ฌธ์์ด ์์๋ฅผ ์ฌ์ฉํ์ฌ ๋ํ๋.
char animal[20]="fox";
char * ps;
ps=animal;
...
cout<<(int *)animal<<": "<<animal<<endl;
cout<<(int *)ps<<": "<<ps<<endl;
->์ถ๋ ฅ ์
0013FF6C:fox
0013FF6C:fox
cout์ ํฌ์ธํฐ๋ฅผ ์ ๋ฌํ๋ฉด ์ฃผ์๊ฐ ์ถ๋ ฅ๋์ง๋ง ํฌ์ธํฐ๊ฐ char* ํ์ผ ๊ฒฝ์ฐ ๊ทธ ํฌ์ธํฐ๊ฐ ์ง์ํ๋ ๋ฌธ์์ด์ด ์ถ๋ ฅ
๋ฌธ์์ด์ ๋ณต์ฌ๋ณธ ๋ง๋ค๊ธฐ
ps=new char[strlen(animal)+1]; //์ ์ ์ฅ๊ณต๊ฐ ํ๋ณด
strcpy(ps,animal); //๋ฌธ์์ด์ ์๋ก ๋์
๋ฐ์ ๊ณต๊ฐ์ผ๋ก ๋ณต์ฌ
strcpy() ์ฒซ ๋ฒ์งธ ๋งค๊ฐ๋ณ์ : ๋ฌธ์์ด์ด ๋ณต์ฌ๋ ๋์ฐฉ์ง ์ฃผ์, ๋ ๋ฒ์งธ : ๋ณต์ฌํ ๋ฌธ์์ด์ด ์๋ ์ฃผ์
strncpy() ์ธ ๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ณต์ฌํ ์ต๋ ๋ฌธ์ ์ ์ง์ , ๋ฌธ์์ด์ ๋๊น์ง ๋ณต์ฌํ๊ธฐ ์ , ์ ์ฅ๊ณต๊ฐ์ด ๋ฐ๋ฅ๋ ๊ฒฝ์ฐ ๋์ ๋ ๋ฌธ์๋ฅผ ์ถ๊ฐํ์ง ์์
new๋ฅผ ์ฌ์ฉํ ๋์ ๊ตฌ์กฐ์ฒด ์์ฑ
"๋์ " : ์ปดํ์ผ ์๊ฐ์ด ์๋ ์คํ ์๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋์
new๋ฅผ ๊ตฌ์กฐ์ฒด์ ์ฌ์ฉํ ๋ ์์์ผ ํ ๊ฒ
- ๊ตฌ์กฐ์ฒด ์์ฑ : ๊ตฌ์กฐ์ฒดํ ์์๋ค new๋ฅผ ๋ถ์.(๋์ ๊ตฌ์กฐ์ฒด๋ ์ด๋ฆ์ด ์๋ค.) ex) inflatable * ps = new inflatable;
-
๋ฉค๋ฒ์ ์ ๊ทผ : ํ์ดํ ๋ฉค๋ฒ ์ฐ์ฐ์ ์ฌ์ฉ (->)
๋ํธ ๋ฉค๋ฒ ์ฐ์ฐ์(.) : ๊ตฌ์กฐ์ฒด ์ด๋ฆ๊ณผ ํจ๊ป ์ฌ์ฉ ex) (*ps).price ์ฒ๋ผ ์ฌ์ฉ
ํ์ดํ ๋ฉค๋ฒ ์ฐ์ฐ์(->) : ๊ตฌ์กฐ์ฒด๋ฅผ ์ง์ํ๋ ํฌ์ธํฐ์ ํจ๊ป ์ฌ์ฉ ex) ps->price