programing

C에서 '**'는 무엇을 의미합니까?

iphone6s 2023. 6. 16. 21:31
반응형

C에서 '**'는 무엇을 의미합니까?

어떤 물체가 처음에 두 개의 별표를 가지고 있다는 것은 무엇을 의미합니까?

**variable

선언문에서, 그것은 포인터에 대한 포인터라는 것을 의미합니다.

int **x;  // declare x as a pointer to a pointer to an int

사용 시 두 번의 방어를 수행합니다.

int x = 1;
int *y = &x;  // declare y as a pointer to x
int **z = &y;  // declare z as a pointer to y
**z = 2;  // sets the thing pointed to (the thing pointed to by z) to 2
          // i.e., sets x to 2

포인터 대 포인터입니다.

자세한 내용은 Pointer to pointer to pointer

예를 들어, 다차원 배열을 동적으로 할당하는 데 유용할 수 있습니다.

예:

#include <stdlib.h>

int **array;
array = malloc(nrows * sizeof(int *));
if(array == NULL)
{
    fprintf(stderr, "out of memory\n");
    exit or return
}

for(i = 0; i < nrows; i++)
{
    array[i] = malloc(ncolumns * sizeof(int));
    if(array[i] == NULL)
    {
        fprintf(stderr, "out of memory\n");
        exit or return
    }
}

변수가 포인터에 대한 포인터임을 의미합니다.

변수를 선언할 때 포인터로 이동합니다.

선언 외부에서 사용할 경우 이중 포인터 참조 취소.

포인터에 대한 포인터입니다.

cdecl을 사용하여 C-type을 설명할 수 있습니다.

여기에 온라인 인터페이스가 있습니다. http://cdecl.org/ .텍스트 필드에 "int **x"를 입력하고 결과를 확인합니다.

**discreference는 이중 참조 해제입니다.변수가 주소의 주소인 경우 결과 식은 *variable에 저장된 주소의 l 값이 됩니다.

선언의 일부일 경우 다른 의미를 가질 수 있습니다.

type **filename은 포인터에 대한 포인터, 즉 포인터이기도 하지만 이번에는 'type' 유형의 변수에 대한 다른 변수의 주소를 보유할 수 있는 변수를 의미합니다.

즉, 변수가 두 번 참조되지 않습니다.다음과 같은 char 포인터에 대한 포인터가 있다고 가정합니다.

char** 변수 = ...;

이 포인터가 가리키는 값에 액세스하려면 두 번 참조를 취소해야 합니다.

**그림

포인터에 대한 포인터입니다.당신이 다음을 가리키고 싶다면 이것을 사용할 수 있습니다.array또는const char *(끈).또한 코코아를 사용한 목표-C에서 이것은 종종 다음을 가리키는 데 사용됩니다.NSError*.

다른 포인터로의 포인터

는 포인터에 대한 포인터입니다.이것들은 때때로 문자열 배열에 사용됩니다.

포인터 대 포인터입니다.

*x가 어떤 변수의 주소를 포함할 것이라는 것을 의미하는 경우와 같이, 만약 내가 말한다면.

m=&x 그러면 m은 다음과 같이 표시됩니다.

int **m

언급URL : https://stackoverflow.com/questions/2893129/what-does-mean-in-c

반응형