«

»

Αυγ 02

c 포인터 배열 예제

여기서 ptr은 10개의 정수 배열을 가리킬 수 있는 포인터입니다. 하위 스크립트는 간접보다 우선 순위가 높기 때문에 괄호 안에 간접 연산자와 포인터 이름을 둘러싸야 합니다. 여기서 ptr의 유형은 `10개의 정수 배열에 대한 포인터`입니다. 참고 : 배열의 0 요소를 가리키는 포인터와 전체 배열을 가리키는 포인터는 완전히 다릅니다. 다음 프로그램은 다음과 같은 점을 보여 주며, 1) 배열이 있는 포인터를 사용하는 동안 포인터의 데이터 형식이 배열의 데이터 형식과 일치해야 합니다. 2) 배열 이름을 사용하여 다음과 같은 포인터를 초기화 할 수도 있습니다 : 함수 포인터에 typedef를 선언하면 일반적으로 코드가 명확해지습니다. 다음은 함수 포인터와 void * 포인터를 사용하여 콜백으로 알려진 것을 구현하는 예제입니다. DoSomethingNice 함수는 호출자 제공 함수 TalkJive 호출자 데이터. DoSomethingNice는 데이터 포인터가 무엇을 가리키는지 에 대해 알지 못합니다. 다음은 포인터를 만드는 데 도움이 될 수있는 몇 가지 예제 구문입니다. ptr은 4개의 정수 배열에 대한 포인터이므로 ptr + i는 ith 행을 가리킵니다. ptr + i를 디참조할 때 ith 행의 기본 주소를 얻습니다.

ith 행의 jth 요소의 주소에 액세스하려면 포인터 식 *(ptr + i)에 j를 추가할 수 있습니다. 따라서 포인터 표현식 *(ptr + i) + j는 ith 행의 jth 요소의 주소를 제공하고 포인터 식 *(ptr + i)+j)는 ith 행의 jth 요소의 값을 제공합니다. 포인터 표현식 *(ptr + i) + j)는 서브스크립트 식 ptr[i][j]와 동일하다는 것을 알고 있습니다. 따라서 2-D 배열의 기본 주소를 포함하는 포인터 변수가 있는 경우 해당 포인터 변수를 두 번 서브스크립팅하여 배열 요소에 액세스할 수 있습니다. 위의 프로그램에서 포인터 *p는 배열에 저장된 모든 값을 하나씩 인쇄합니다. 또한 기본 주소(위의 경우)를 사용하여 포인터 역할을 하고 모든 값을 인쇄할 수도 있습니다. a 또는 b와 같은 배열을 두 가지 방법으로 함수에 전달할 수 있습니다. 정수 배열을 매개 변수로 받아들이고 배열의 내용을 stdout에 인쇄하는 함수 덤프를 상상해 보십시오. 덤프를 코딩하는 방법에는 두 가지가 있습니다: 포인터와 배열 이름을 거의 서로 바꾸어 사용할 수 있습니다.


by Bliss Drive Review