ํฐ์คํ ๋ฆฌ ๋ทฐ
๐ charํ ํฌ์ธํฐ
• ๋ฌธ์์ด ์ฒ๋ฆฌ์ ํจ๊ณผ์
• ๋ฌธ์์ด ์ฒ๋ฆฌ์ charํ ํฌ์ธํฐ ์ฌ์ฉ
๐ charํ ํฌ์ธํฐ์ ๊ธฐ์ต๊ณต๊ฐ ํํ
char *cp = "COMPUTER";
โ cp๋ ๋ฌธ์์ด์ ์์ ์ฃผ์๋ฅผ ๊ฐ์
โ ๋ฐ๋ผ์ ๊ฐ์ ์ฐธ์กฐํ ๋์ ๋ฌ๋ฆฌ ํฌ์ธํฐ ๋ณ์ cp์ ์ฃผ์๋ฅผ ์นํํ์ง ์๋๋ค
(cp๋ ์ด๋ฏธ ์ฃผ์๋ฅผ ๊ฐ์ง๊ณ ์์)
๐ char ํฌ์ธํฐ์ ์ฌ์ฉ ์
#include <stdio.h>
void main()
{
char *cp = "COMPUTER";
// char ํ ํฌ์ธํฐ ๋ณ์ cp์ ๊ฐ : "COMPUTER"๊ฐ ์๋ก๋ ์์ ์ฃผ์
int i = 0;
do
printf("*(cp+%d) : %c\n", i, *(cp+i));
while (*(cp + i++) != 0)
}
๐ ํฌ์ธํฐ์ ๋ฐฐ์ด์ ๊ด๊ณ
๐ ํฌ์ธํฐ๋ฅผ ์ด์ฉํ 1์ฐจ์ ๋ฐฐ์ด์ ์ฐธ์กฐ
char s[] = "SCIENCE";
char *cp; // charํ ํฌ์ธํฐ ๋ณ์ ์ ์ธ (ํ ๋น์ X)
cp = s; // ํฌ์ธํฐ cp๋ฅผ ์ด์ฉํด ๋ฐฐ์ด s์ ๋ด์ฉ ์ฐธ์กฐ
• cp+1 ์ ์ฃผ์๋ฅผ ๋ํ๋ด๊ธฐ ๋๋ฌธ์ &s[1] ์ ๋์ผ
• *(cp+1) ์ ๋ด์ฉ์ ๋ํ๋ด๊ธฐ ๋๋ฌธ์ s[1] ์ ๋์ผ
๐ ํฌ์ธํฐ๋ฅผ ์ด์ฉํ 1์ฐจ์ ๋ฐฐ์ด์ ์ฐธ์กฐ ์
#include <stdio.h>
void main(){
static int a[] = {10, 20, 30, 40, 50};
int *pt, b, c, d;
pt = a; // ๋ฐฐ์ด๋ช
= ์ฃผ์ (a๋ a๋ผ๋ ์ด๋ฆ์ผ๋ก ์ ์ธ๋ ๊ธฐ์ต ๊ณต๊ฐ์ ์์ ์ฃผ์)
b = *pt + *(pt+3); // 10 + 40 = 50
pt++; // &a[1]
c = *pt + *(pt+3); // 20 + 50 = 70
d = *pt + 3; // 23
printf("b = %d. c = %d, d = %d", b, c, d);
// b = 50, c = 70, d = 23
}
๐ ํฌ์ธํฐ๋ฅผ ์ด์ฉํ 2์ฐจ์ ๋ฐฐ์ด์ ์ฐธ์กฐ
int a[2][3];
int *pt;
pt = a;
โจ a : ๋ฐฐ์ด a[2][3]์ ์์ ์ฃผ์
โจ a[0] : ์ฒซ ๋ฒ์งธ ํ
โจ a[1] : ๋ ๋ฒ์งธ ํ
๐ ํฌ์ธํฐ๋ฅผ ์ด์ฉํ 2์ฐจ์ ๋ฐฐ์ด์ ์ฐธ์กฐ ์
#include <stdio.h>
void main(){
static a[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, -9}};
int *pt;
pt = a[0]; // ์ฒซ ๋ฒ์งธ ํ์ ์์ ์ฃผ์
while(*pt != -9) {
printf("%d", *pt);
pt++;
}
}
๐ ํฌ์ธํฐ์ ๋ฐฐ์ด์ ์๋ก ํธํ์
๐ ํฌ์ธํฐ์ ๋ฐฐ์ด์ ํธํ ์
#include <stdio.h>
void main(){
char A[] = "ARRAY";
char *p = "POINTER";
int i;
for(i = 0; i < 5; i++)
printf("*(A+%d) : %c\n", i, *(A+i));
// *(A+i) : ๋ฐฐ์ด์ ํฌ์ธํฐ ํ์์ผ๋ก ์ฐธ์กฐ
for(i = 0; i < 7; i++)
prinft("p[%d] : %c\n", i, p[i]);
// p[i] : ํฌ์ธํฐ๋ฅผ ๋ฐฐ์ด ํ์์ผ๋ก ์ฐธ์กฐ
}
๐ ํฌ์ธํฐ์ ๋ฐฐ์ด์ ๊ฐ ๋ณ๊ฒฝ
โจ ์ฃผ์ ๊ฐ ์์ฒด๋ฅผ ๋ณ๊ฒฝํ ์๋ ์๋ค
๐ ํฌ์ธํฐ์ ๋ฐฐ์ด์ ๊ธฐ์ต๊ณต๊ฐ ํ๋ณด
[ ๋ฐฐ์ด ]
• ๊ธฐ์ต๊ณต๊ฐ ์ค ์๋ฃ์์ญ์ ๊ณ ์ ์ ์ผ๋ก ํ๋ณด
[ ํฌ์ธํฐ ]
• ๊ธฐ์ต๊ณต๊ฐ ์ค ์๋ฃ์์ญ์ ์ ๋์ ์ผ๋ก ํ๋ณด
- ํ์ํ ๋๋ง ์๋ฃ์ฉ ๊ธฐ์ต ๊ณต๊ฐ ํ๋ณด
- ์๋ฃ ๊ฐ์๊ฐ ๊ฐ๋ณ์ ์ธ ๊ฒฝ์ฐ ํจ๊ณผ์
โ ํฌ์ธํฐ๊ฐ ๋ฐฐ์ด๋ณด๋ค ํ์ฉ์ ํญ์ด ๋๋ค!
๐ ํฌ์ธํฐ ๋ฐฐ์ด
๐ ํฌ์ธํฐ ๋ฐฐ์ด
ํฌ์ธํฐ ๋ฐฐ์ด โจ ํฌ์ธํฐ์ ์งํฉ
๐ ํฌ์ธํฐ ๋ฐฐ์ด ์ ์ธ๊ณผ ๊ธฐ์ต๊ณต๊ฐ ํํ
char *PA[4];
PA[0] = "ELECTRONICS";
PA[1] = "DATA";
PA[2] = "PROCESSING";
PA[3] = "SYSTEM";
โจ 2์ฐจ์ ๋ฐฐ์ด์ธ ๊ฒฝ์ฐ ์ด 48๊ฐ์ ๊ธฐ์ต๊ณต๊ฐ ํ์, ํฌ์ธํฐ ๋ฐฐ์ด์ด๋ฉด ์ด 35๊ฐ ๊ธฐ์ต๊ณต๊ฐ ํ์
๐ ํฌ์ธํฐ ๋ฐฐ์ด ์ฌ์ฉ ์
#include <stdio.h>
void main(){
int a[] = {1, 2, 3, 4};
int b[] = {5, 6, 7, 8};
int *PA[2]; // 2๊ฐ์ ํฌ์ธํฐ ๋ฐฐ์ด ์ ์ธ
PA[0] = a; // a[0] ํฌ์ธํ
PA[1] = b; // b[0] ํฌ์ธํ
printf(*(PA[0]) = %d\n", *(PA[0]));
// 1
printf(*(PA[0] + 1) = %d\n", *(PA[0] + 1));
// 2
printf("*PA[1] = %d\n, *PA[1]);
// 5
printf("*PA[1] + 15 = %d\n", *PA[1] + 15);
// 20
}
๐ ์ด์ค ํฌ์ธํฐ
๐ ์ด์ค ํฌ์ธํฐ์ ๊ฐ๋
๐ ์ด์ค ํฌ์ธํฐ์ ์ ์ธ
๐ ์ด์ค ํฌ์ธํฐ์ ์ ์ธ ์
int **p;
p : ๊ธฐ์ต๊ณต๊ฐ ์ฃผ์
*p : ์ฃผ์ p์ ์๋ก๋์ด ์๋ ๊ฐ. ์ด ๊ฐ์ด ์ฃผ์๋ก ์ฐ์
**p : ์ฃผ์๊ฐ *p์ธ ๊ณณ์ ์๋ก๋์ด ์๋ ๊ฐ. ์ฆ intํ ์๋ฃ
๐ ์ด์ค ํฌ์ธํฐ์ ์ฌ์ฉ ์
#include <stdio.h>
void main(){
char a = 'A', *p, **pp; // ์ด์ค ํฌ์ธํฐ ๋ณ์ **p ์ ์ธ
p = &a; // ํฌ์ธํฐ ๋ณ์์ ์ผ๋ฐ ๋ณ์ a์ ์ฃผ์ ํ ๋น
pp = &p; // ์ด์ค ํฌ์ธํฐ ๋ณ์์ ํฌ์ธํฐ ๋ณ์ p์ ์ฃผ์ ๊ฐ ํ ๋น
printf("**pp = %c", **pp); // **pp = A
}
'๐ซ๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ์ด์ฌํ๋ก๊ทธ๋๋ฐ๊ธฐ์ด] 11. ๋ชจ๋ (0) | 2024.05.06 |
---|---|
[ํ์ด์ฌํ๋ก๊ทธ๋๋ฐ๊ธฐ์ด] 10. ๊ฐ์ฒด์งํฅ (0) | 2024.05.04 |
[Cํ๋ก๊ทธ๋๋ฐ] 09. ๋ฐฐ์ด๊ณผ ํฌ์ธํฐ โก (1) | 2024.05.01 |
[Cํ๋ก๊ทธ๋๋ฐ] 08. ๋ฐฐ์ด๊ณผ ํฌ์ธํฐ โ (1) | 2024.05.01 |
[Cํ๋ก๊ทธ๋๋ฐ] 07. ํจ์์ ๊ธฐ์ต ํด๋์ค โก (0) | 2024.04.29 |