C++의 포인터 배열 과 포인터 의 지침 을 깊이 분석 합 니 다.

포인터 배열 정의:만약 에 하나의 배열 이 라면 그 요 소 는 모두 포인터 형 데이터 이 고 이 배열 은 포인터 배열 입 니 다.즉,포인터 배열 의 모든 요 소 는 하나의 포인터 변수 에 해당 하 며 그 값 은 모두 주소 입 니 다.
형식:1 차원 포인터 배열 의 정의 형식 은 int[유형 명]*p[배열 명][4][배열 길이]이다.[]비*우선 순위 가 높 기 때문에 p 는 먼저[4]와 결합 하여 p[4]의 배열 형식 을 형성한다.그 다음 에 p 앞의'*'와 결합 하면'*'는 이 배열 이 포인터 유형 임 을 나타 내 고 모든 배열 요 소 는 하나의 포인터 변수 에 해당 하 며 성형 변 수 를 가리 킬 수 있다.
메모:int(*p)[4]형식 으로 쓸 수 없습니다.이것 은 1 차원 배열 을 가리 키 는 포인터 변 수 를 말 합 니 다.포인터 배열 의 각 요 소 를 사용 하여 문자열 의 처 리 를 더욱 원활 하 게 합 니 다.
프로그램 1.1

#include<iostream>
using namespace std;
int main(){
 void sort(char *p[],int n);
 void print(char *p[],int n);
 char *name[]={"C","C++","PHP","ASP","ASP.NET","C#","JAVA","BASIC","PASCAL","COBOL"};
 int n=10;
 sort(name,n);
 print(name,n);
 return 0;
}
void sort(char *p[],int n){
 char *temp;
 int i,j,k;
 for(i=0;i<n;i++){
  k=i;
  for(j=i;j<n;j++){
   if(strcmp(p[j],p[k])<0){
    k=j;
   }
  }
  if(k!=i){
      temp=p[k];
      p[k]=p[i];
      p[i]=temp;
  }
 }
}
void print(char *p[],int n){
 int i;
 for(i=0;i<n;i++){
  cout<<p[i]<<endl;
 }
}

분석:main 함수 에서 포인터 배열 name 을 정 의 했 습 니 다.10 개의 요 소 는 문자열

"C","C++","PHP","ASP","ASP.NET","C#","JAVA","BASIC","PASCAL","COBOL"
의 시작 주소 입 니 다.그 다음 에 배열 의 첫 번 째 요소 의 주 소 를 함수 sort 의 p 배열 에 전달 하기 때문에 인삼 p 와 실제 인삼 name 은 같은 배열 을 가리 키 고 있 습 니 다.그리고 선택 법 으로 배열 을 정렬 했다.print 함수 의 역할 은 각 문자열 을 출력 하 는 것 입 니 다.p[0]~p[9]는 각각 각 문자열 의 첫 번 째 주소 입 니 다.
print 함 수 는 포인터 의 지침 을 가리 키 는 형식 으로 바 꿀 수 있 습 니 다.
정의:포인터 데 이 터 를 가리 키 는 지침 은 포인터 의 지침 입 니 다.예 를 들 어 프로그램 1.1 의 main 함수 에서 정 의 된 포인터 배열 name[10],

void print(char *p[],int n){
    char *q=p[0];
    int i=0;
    while(i<n){
     q=*(p+i++);
     cout<<q<<endl;
    }
}
포인터 배열 의 첫 번 째 포인터 요소 의 주 소 를 가리 키 는 변수 p 에 부여 하 는 것 을 의미 합 니 다.
프로그램 1.2

char * *p=name
분석:p 는 지침 을 가리 키 는 지침,즉 저 장 된 name[2]의 주소 값 입 니 다.*p 는 포인터,즉 name[2]의 값(포인터 배열 의 요소)입 니 다.**p 는 포인터 가 가리 키 는 데이터 의 값 입 니 다.p 는 char 형식의 데 이 터 를 가리 키 기 때문에 첫 번 째 문 자 를 출력 합 니 다.

좋은 웹페이지 즐겨찾기