10장 포인터

Download Report

Transcript 10장 포인터

고급 C 프로그래밍
Chapter 10. 포인터
포인터와 문자열

문자열을 저장하는 두 가지 방법

char str1[10]=“language”;

char *str2=“language”;
포인터와 문자열 (2)

공통점






printf(“%s\n”, str1);
printf(“%c\n”, str1[3]);
printf(“%c\n”, *(str1+3));
printf(“%s\n”, str2);
printf(“%c\n”, str2[3]);
printf(“%c\n”, *(str2+3));
포인터와 문자열 (2)

차이점 1





scanf(“%s”, str1);
scanf(“%c”, str1[3]);
scanf(“%c”, *(str1+3));
str2에 대한 scanf() 명령은 가능하지 않음!!!
차이점 2





str2=“c-languang”;
str2=str1;
str1=“c-language”; (X)
str1=str2; (X)
str1에 대한 대입 연산은 가능 하지 않음!!!
문자열 처리 함수

문자열의 길이 반환

n=strlen(s);


n은 배열 s내의 실제 문자 수
문자열의 순서 비교

n=strcmp(s1, s2);



n이 0이면, 두 문자열 s1과 s2는 같다
n이 양수면, s1이 s2보다 뒤
n이 음수면, s2가 s1보다 뒤
문자열 처리 함수 (2)

문자열 복사

strcpy(s1, s2);


s1이 s2의 문자열로 바뀜
문자열 연결

strcat(s1, s2);

s1이 s1+s2의 문자열로 바뀜
문자열에 대한 포인터 교환

문자열 포인터 교환
char *first=“abc”, *second=“def”, *temp;
temp=first;
first=second;
second=temp;
문자열에 대한 포인터를 인수로 전달
int main(void){
char *s=“language”;
int i;
for (i=0; i<strlen(s); i++)
printstring(s+i);
return 0;
}
void printstring(char *string){
printf(“%s\n”, string);
}
포인터와 다차원 배열

2차원 배열에 대한 포인터





int array[2][3];
array[0], array : 2차원 배열 첫 줄의 시작 주소
array[1], array+1 : 2차원 배열 둘째 줄의 시작 주소
…
array[i], array+i : 2차원 배열 i번째 줄의 시작 주소
여러 문자열 저장

여러 문자열을 저장하는 두 가지 방법


char flower[5][10]={“rose”, “sunflower”, “lily”, “lavender”,
“cosmos”};
char*flower[5]={“rose”, “sunflower”, “lily”, “lavender”,
“cosmos”};
for (i=0;i<5;i++)
printf(“%s\n”, flower[i]);