ํฌ์ธํฐ ์ ์ธ ๋ฐฉ๋ฒ
1. char *cities[10];
=> ํฌ์ธํฐ ๋ฐฐ์ด(ํฌ์ธํฐ๊ฐ ๋ฐฐ์ด ํํ๋ก 10๊ฐ๊ฐ ์กํ)
2. char (*cities)[10];
=> ๋ฐฐ์ด ํฌ์ธํฐ ( Xํ 10์ด์ง๋ฆฌ ๋ฐฐ์ด์ ๊ฐ๋ฆฌํฌ ์ ์๋ ๋ฐฐ์ด ํฌ์ธํฐ)
3. char *(cities[10]);
=> 1๋ฒ๊ณผ ๋์ผ([ ] ๊ฐ ์ฐ์ ์์๊ฐ ๋ ๋์)
4. char *(cities)[10];
=> 1๋ฒ๊ณผ ๋์ผ
5.double (*lines[5])[2];
=> Xํ 2์ด์ง๋ฆฌ ๋ฐฐ์ด์ ๊ฐ๋ฆฌํฌ ์ ์๋ ํฌ์ธํฐ๊ฐ ๋ฐฐ์ด๋ก ์กด์ฌ(5๊ฐ์ ํฌ์ธํฐ ๋ฐฐ์ด)
6. double (*arr)[5][2];
=> X๋ฉด 5ํ 2์ด์ ๊ฐ๋ฆฌํฌ ์ ์๋ ๋ฐฐ์ด ํฌ์ธํฐ
7. char *city = "Busan";
=> "Busan" ์ด๋ผ๋ ๋ฌธ์์ด์ ์์์ฃผ์์ธ 'B' ๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ ๋ณ์
8. const char *city = "busan";
=> city ๊ฐ ๊ฐ๋ฆฌํค๋ ๋์์ฒด๋ ์์(์์ ๋ถ๊ฐ)...์ฆ,,,ํฌ์ธํฐ ์์
9. char *const city = "Busan";
=> city ๋ ๋ค๋ฅธ ๋์์ฒด๋ฅผ ๊ฐ๋ฆฌ ํฌ ์ ์์ด...์ฆ,,,์์ ํฌ์ธํฐ
=> ๊ทธ๋ฌ๋,,,"Busan" ๋ฌธ์์ด ์์ฒด๊ฐ ์ ์ ๋ฐ์ดํฐ ์์ญ์ ์กด์ฌํ๋ read only ๋ฌธ์์ด์ด๋ฏ๋ก
=> ๊ฒฐ๊ตญ์,,,์ด ๋ฌธ์์ด ์์ฒด๋ ์์ ์ด ๋ถ๊ฐ๋ฅ...
10. const char *const city = "Busan";
=> city๊ฐ ๋ค๋ฅธ ์ฃผ์๊ฐ์ ๊ฐ๋ฆฌํฌ ์๋ ์๊ณ , city ๊ฐ๋ฆฌํค๋ ๊ณณ์ ๊ฐ์ ์์ ๋ ํ ์ ์์ด...
=>ํฌ์ธํฐ ์์์ด๋ฉด์, ์์ ํฌ์ธํฐ
=> city ๊ฐ ๊ฐ๋ฆฌํค๋ ๊ณณ์ ๋ฌธ์์ด์ ์์์ฃผ์('B')
11. float *g(), (*h)();
=> g ๋ ๋งค๊ฐ๋ณ์๊ฐ ์๊ณ , float * ํ์ ์ ๋ฆฌํดํ๋ ํจ์
=> h ๋ ๋งค๊ฐ๋ณ์๊ฐ ์๊ณ , float ํ์ ์ ๋ฆฌํดํ๋ ํจ์๋ฅผ ๊ฐ๋ฆฌํค๋ ํจ์ ํฌ์ธํฐ ๋ณ์
12. void ex(int, double (*)(int));
=> ๋งค๊ฐ๋ณ์๋ก int ํ์ ๊ณผ double ํ์ ๋ฆฌํดํ๋ฉฐ int ํ์ ์ ๋งค๊ฐ๋ณ์๋ก ๊ฐ๋ ํจ์๋ฅผ ๊ฐ๋ฆฌํค๋ ํจ์ ํฌ์ธํฐ
๋ณ์๋ฅผ ์ทจํ๋ ex ํจ์...ex ์ ๋ฆฌํด๊ฐ์ ์์ด.
13. void (*p)(float,float,float (*)(float,float);
=> ๋งค๊ฐ๋ณ์: float ํ์
float ํ์
float ํ์ ์ ๋ฆฌํดํ๋ฉฐ, 2๊ฐ์ float ํ์ ์ ๋งค๊ฐ๋ณ์๋ก ๋ฐ๋ ํจ์๋ฅผ ๊ฐ๋ฆฌํค๋ ํจ์ ํฌ์ธํฐ ๋ณ์
=> p ๋ ๋ฆฌํด๊ฐ์ด ์์ด
=> ์ฆ,,,p๋ ํจ์ ํฌ์ธํฐ ๋ณ์
14. int (*(*p)())()
=> ์์ ์ ๋งค๊ฐ๋ณ์๋ ์๊ณ , int __( ) ํ์ ์ ํจ์๋ฅผ ๋ฆฌํด ๋ฐ์ ์ ์๋ ํจ์ ํฌ์ธํฐ ๋ณ์
15. int (*func[5])();
=> int __( ) ํ์ ์ ํจ์๋ฅผ ๊ฐ๋ฆฌํฌ ์ ์๋ ํจ์ ํฌ์ธํฐ ๋ฐฐ์ด
16. char * const * const p;
=> ์ด์ค ํฌ์ธํฐ p๊ฐ ๊ฐ๋ฆฌํค๋ ์ผ์ฐจ์ ํฌ์ธํฐ์ ์ฐธ์กฐ๊ฐ๋ง ์์ ์ด ๊ฐ๋ฅ
=> ์ฆ,,,์์ ํฌ์ธํฐ
17. const char * const * const p;
=> const ๋ ์์ ์ ์ค๋ฅธ์ชฝ ํญ์ ์์ํ ์ํด
=> p๋ ์์ ์ด ๊ฐ๋ฆฌํค๋ ์ผ์ฐจ์ ํฌ์ธํฐ์ ์ฃผ์๋ง์ ๊ฐ๋ฆฌํฌ ์ ์๊ณ ,
์ด ์ผ์ฐจ์ ํฌ์ธํฐ๋ ์ฒ์์ ๊ฐ๋ฆฌํค๋ ๊ณณ ์ธ์๋ ๋ค๋ฅธ ์ฃผ์๊ฐ์ ๊ฐ๋ฆฌํฌ ์ ์์ด.
18. void *p = new(double (*)[3];
=> p ๋ Xํ 3์ด์ง๋ฆฌ double ํ์ ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น๋ฐ์ ์ ์์ด...
=> p ๋ 1์ฐจ์์ผ๋ก๋ง ํํ๋จ...
19. int atexit(void (*)(void));
=> void __( ) ํํ์ ํจ์๋ฅผ ๊ฐ๋ฆฌํฌ ์ ์๋ ํจ์ ํฌ์ธํฐ ๋ณ์๋ฅผ ๋งค๊ฐ๋ณ์๋ก ์ทจํ๊ณ , int ํ์ ์ ๋ฆฌํดํ๋
ํจ์ atexit
20. void (*signal(int, void(*)(int))
=> ์๋ชป๋ ํจ์ํ์ ์...
=> signal ํจ์๋ ๋งค๊ฐ๋ณ์๋ก int ํ์ ๊ณผ void __(int) ํํ๋ฅผ ์ทจํ๋ ํจ์๋ฅผ ๊ฐ๋ฆฌํฌ ์ ์๋ ํจ์ ํฌ์ธํฐ ๋ณ์
๋ฅผ ๋งค๊ฐ๋ณ์๋ก ๊ฐ๊ณ ์์ง๋ง,,,์ด signal ํจ์์ ๋ฆฌํด๋ ํจ์์ ๋งค๊ฐ๋ณ์ ์ ์ธ์ด ์๋ ์ํ์...
=> ์ฌ๋ฐ๋ฅธ ํํ:
์) void (*signal(int, void(*)(int)) ( );
๋ค์์ ์ค๋ช ์ ๋ฐ๋ผ ํจ์ ์ํ์ ์์ฑํ๋ผ
1. func1์ด๋ผ๋ ํจ์๋ ์ ๋ฌ์ธ์๋ ์๊ณ , ๋ฆฌํด ๊ฐ๋ ์๋ค.
=> void func1( );
2. func2๋ผ๋ ํจ์๋ double์ ๋ฌ ์ธ์๋ฅผ ํ๋ ๋ฐ์์ intํ์ ๋ฐํํ๋ค.
=> int func2(double);
3. func3๋ผ๋ ํจ์๋ int ์ฐธ์กฐ๋ฅผ ์ ๋ฌ์ธ์๋ก ๋ฐ์์ char*๋ฅผ ๋ฐํํ๋ค
=> char* func3(int& );
4. func4๋ผ๋ ํจ์๋ ์ฒซ๋ฒ์งธ ์ธ์๋ก ๊ตฌ์กฐ์ฒด Arff์ ์ฐธ์กฐ, ๋ ๋ฒ์งธ ์ธ์๋ก ๊ตฌ์กฐ์ฒด
Map์ ์ฐธ์กฐ, ์ธ๋ฒ์งธ ์ธ์๋ก int๋ฅผ ๋ฐ์์, ๊ตฌ์กฐ์ฒด Arffd์ ์ฐธ์กฐ๋ฅผ ๋ฐํํ๋ค.
func4๋ ์ฒซ๋ฒ์งธ ์ธ์์ ๋๋ฒ์งธ ์ธ์์ ๊ฐ์ ๋ณ๊ฒฝํ์ง ์๋๋ค.
=> Arffd& func4(const Arff&, const Map&, int);
5. func5๋ผ๋ ํจ์๋ ๋ฌธ์์ด ์ ๋ฌ ์ธ์๋ฅผ ๋ฐ์์ intํ์ ๋ฐํํ๋ค.
๋จ func5ํจ์๋ ์ ๋ฌ๋ฐ์ ๋ฌธ์์ด์ ๋ณ๊ฒฝํ์ง ์๋๋ค.
=> int func5(const char* );
6. func6๋ผ๋ ํจ์๋ ์์ func4๋ผ๋ ํจ์์ ํฌ์ธํฐ๋ฅผ ์ฒซ๋ฒ์งธ ์ธ์๋ก ๋ฐ๊ณ ,
double์ ๋ ๋ฒ์งธ ์ธ์๋ก ๋ฐ๋๋ค. ๋ฐํํ๋ ๊ฐ์ ์๋ค.
=> void func6(Arffd& (*)(const Arff&, const Map&, int), double);
7.func ์ด๋ผ๋ ํจ์๋ ์์ func4๋ผ๋ ํจ์์ ํฌ์ธํฐ๋ฅผ ์ฒซ๋ฒ์งธ ์ธ์๋ก ๋ฐ๊ณ ,
์์ func6๋ผ๋ ํจ์์ ํฌ์ธํฐ๋ฅผ ๋ ๋ฒ์งธ ์ธ์๋ก ๋ฐ๊ณ , ์์ func5๋ผ๋
ํจ์์ ํฌ์ธํฐ๋ฅผ ๋ฐํํ๋ค.
=> int (*func(Arffd& (*)(const Arff&, const Map&, int), void (*)(Arffd& (*)(const Arff&, const Map&,
int), double)) (const char*);
์ดํด๋ฅผ ๋๊ธฐ ์ํด...
ํจ์ ํฌ์ธํฐ์ ์)
int AA()
{
puts("AA");
return 10;
}
void BB()
{
puts("BB");
}
// ๋งค๊ฐ๋ณ์๋ก void __( ) ํํ์ ํจ์๋ฅผ ๋ฐ๊ณ , int __( ) ํํ์ ํจ์๋ฅผ ๋ฆฌํดํ๋ ํจ์ P
int (*P(void (*PTR)())) ( )
{
PTR();
return AA;
}
void main()
{
int (*pFunc)() = NULL; // ํจ์ ํฌ์ธํฐ ๋ณ์
pFunc = P(BB); // ํจ์๋ฅผ ๋งค๊ฐ๋ณ์๋ก ๋๊ฒจ์ฃผ๊ณ , ํจ์์ ๋ํ ํฌ์ธํฐ๋ฅผ ๋ฆฌํด ๋ฐ์
printf("%d\n", pFunc()); // ์ด ํจ์ ํฌ์ธํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ํจ์ ํธ์ถ
}