C - 더 많은 포인터, 배열 및 문자열
따라서 이 블로그 게시물에서는 더 많은 포인터에 대해 자세히 살펴보겠습니다.
#C – 포인터에 대한 포인터
포인터에 대한 포인터는 포인터가 다른 포인터의 주소를 보유하는 체인 포인터의 한 형태입니다.
포인터에 대한 포인터 선언은 이름 앞에 별표를 추가하여 수행됩니다.
n
개의 별표()가 있는 포인터는 n - 1
개의 별표()가 있는 포인터의 주소를 보유할 수 있습니다.TYPE **VAR_NAME;
이 경우 이중 별표()가 있는 포인터는 단일 별표()가 있는 포인터의 주소를 보유할 수 있으며 동일한 값을 갖습니다.
예시
Output
이 예를 일반화하려면:
num == *ptr1 == **ptr2
&num == ptr1 == *ptr2
&ptr1 == ptr2
변수 선언 시 이 예제의 메모리 레이아웃은 다음과 같습니다.
num에 값 10을 할당한 후 메모리 레이아웃은 다음과 같습니다.
num의 주소를 ptr1에 추가하고 ptr1을 ptr2에 추가한 후 메모리 레이아웃은 다음과 같습니다.
위의 표에서 볼 수 있듯이 개념을 더 잘 이해하기 위해 변수의 주소를 나타내는 데 숫자를 사용했습니다. 주소는 가장 일반적으로 어떤 형태의 16진수 형식으로 예제의 출력과 같이 입력됩니다.
num = 10 및 address = 13의 값 테이블에서 ptr1은 num의 주소를 13의 값으로 유지하고 ptr1의 주소는 17입니다.
이제 테이블 ptr2의 포인터에 대한 포인터에 도달하면 다른 포인터 ptr1의 주소를 값으로 보유하고 ptr2(이중 포인터)의 경우 다른 포인터의 주소를 보유합니다.
#2차원(2D) 배열
2차원 배열은 배열의 배열이라고도 합니다.
2차원 배열을 선언하려면
TYPE ARRAY_NAME[x][Y]
type이 유효한 C 데이터 유형일 수 있는 경우 arrayName은 유효한 C 식별자, x개의 행 및 y개의 열이 됩니다.
2차원 배열을 초기화하기 위해 두 가지 방법을 사용합니다.
int a[3][4] = {{0, 1, 2, 3},{6, 3, 61, 7},{10, 75, 1, 16}};
int a[3][4] = {0,1,2,3,6,3,61,7,10,75,1,16};
2D 배열을 사용하면 선언 중에 요소를 지정하더라도 항상 두 번째 차원을 지정해야 합니다.
int a[][] = {1, 2, 3 ,4 }
두 번째 값이 지정되지 않았기 때문에 유효하지 않습니다.
예시
Output
다음 예제의 메모리 레이아웃은
Reference
이 문제에 관하여(C - 더 많은 포인터, 배열 및 문자열), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/haile08/c-even-more-pointers-arrays-and-strings-4nf9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)