728x90
반응형
char 포인터
- 포인터는 문자열 처리에 효과적이다
- 문자열 처리에 char형 포인터 사용
char 포인터의 기억공간 표현
char *cp = "COMPUTER";
- cp는 문자열의 시작 주소를 갖는다
- 값을 참조할 때와 달리 포인터 변수 cp에 주소를 치환하지 않는다
#include <stdio.h>
int main(void) {
char *cp = "computer";
register int i=0;
do
printf("*(cp+%d) : %c\n",i,*(cp+i));
while(*(cp+i++)!=0);
}
포인터와 배열
포인터와 배열의 관계
- 포인터를 이용한 1차원 배열 참조
#include <stdio.h>
int main(void) {
char s[] = "SCIENCE";
char *cp;
cp = s;
printf("cp : %s \n",cp);
printf("cp+1 : %s \n",cp+1);
printf("&s[1] : %s \n",&s[1]);
printf("*(cp+1) : %c \n",*(cp+1));
printf("&s[1] : %c \n", s[1]);
}
- cp : char형 포인터를 이용하여 배열 s의 내용을 참조
** 배열은 포인터의 하나이다
-> 모든 배열은 포인터로 표현 가능
포인터를 이용한 2차원 배열의참조
#include <stdio.h>
int main(void) {
int a[2][3] = {
{1,2,3},
{4,5,6}};
int *pt;
pt = *a;
register int i;
for (i = 0; i < 6; i++){
printf("*(pt+i) : %d \n", *(pt+i));
}
}
포인터와 배열의 관계
- 포인터와 배열은 서로 호환적
int a[] = {1,2,3,4,5};
int *p, i;
a + i == &a[i]
a[i] == *(a+i)
*(p+i) == p[i]
포인터와 배열의 호환 예
#include <stdio.h>
int main(void) {
char A[] = "ARRAY";
char *p = "POINTER";
register int i;
for (i=0; i<5; i++){
printf("*(A+%d) : %c \n",i,*(A+i));
}
for (i=0; i<7; i++){
printf("p[%d] : %c \n",i,p[i]);
}
}
포인터와 배열의 값 변경
- 배열a[i] 에서 a++, a-- 등 사용 불가
- 포인터 *p 에서 p++, p--등 사용 가능
배열과 포인터의 기억공간 확보
- 배열 : 기억공간 중 자료 영역을 고정적으로 확보
- 포인터 : 자료 영역을 유동적으로 확보
-> 필요할 때만 기억 공간 확보
-> 자료 개수가 가변적인 경우 효과적 - 포인터가 배열보다 활용 폭이 넓다
포인터 배열
-> 포인터의 집합
- 포인터가 여러개 사용될 때 포인터 배열로 선언
- 주로 문자열 배열 처리에 사용
char \*name[3];
포인터 배열 선언과 기억공간 표현
- 2차원 배열과 활용은 동일하다
- 2차원 배열에 비해 포인터 배열이 기억공간 절약 효과
-> 가변 길이가 가능하기 때문에 (2차원 배열은 행 열의 개수가 일치해야함)
이중 인터
- pointer to pointer
- 자료가 있는 곳을 이중으로 가리키는 포인터 (포인터를 가리키는 포인터)
-> 자료의 주소 값이 들어있는 포인터를 가리키는 포인터 - 형식 : int **P;
int **p;
- p : 기억공간 주소
- *p : p의 값으로 자료의 주소가 들어있음
- **p : 주소가 *p인 곳의 값으로 int형 자료가 들어있음
#include <stdio.h>
int main(void) {
char a = 'A', *p, **pp;
p = &a;
pp = &p;
printf("**pp = %c",**pp);
}
반응형
'프로그래밍 언어 > C' 카테고리의 다른 글
C언어 - 구조체와 공용체(2) (0) | 2021.03.23 |
---|---|
C언어 - 11. 구조체와 공용체 (0) | 2021.03.21 |
C언어 - 9. 배열과 포인터(2) (0) | 2021.03.17 |
C언어 - 8. 배열과 포인터(1) (0) | 2021.03.16 |
C언어 - 7. 함수와 기억클래스(2) (0) | 2021.03.14 |
댓글