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
'programing' 카테고리의 다른 글
| Oracle SQL에서 'YYYY'와 'RRR'의 차이점은 무엇입니까? (0) | 2023.06.16 |
|---|---|
| woocommerce의 범주 및 제품에 대한 동일한 기본 URL (0) | 2023.06.16 |
| 두 줄을 어떻게 연결할 수 있습니까? (0) | 2023.06.16 |
| Python xml 요소문자열 소스의 트리? (0) | 2023.06.16 |
| 하위 쿼리가 있는 Oracle 피벗 절의 예 (0) | 2023.06.11 |