web-dev-qa-db-ja.com

Cでは**はどういう意味ですか

オブジェクトの先頭にアスタリスクが2つあるとはどういう意味ですか?

**variable
29
numerical25

ポインターへのポインターです。詳細については、以下を確認できます。 ポインターへのポインター

[〜#〜] edit [〜#〜]多次元配列を動的に割り当てる場合などに適しています。

お気に入り :

#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
    }
}
29
Incognito

宣言では、ポインターへのポインターであることを意味します。

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

それを使用するとき、それはそれを2回延期します:

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
46
Adam Rosenfield

これは、変数がポインターへのポインターであることを意味します。

6
SLaks

変数を宣言するときのポインターへのポインター。

宣言外で使用された場合のダブルポインター逆参照。

6
Mavrik

Cdeclを使用して、Cタイプを説明できます。

ここにオンラインインターフェースがあります: http://cdecl.org/ 。テキストフィールドに「int ** x」と入力し、結果を確認します。

4
Vimal

ポインターへのポインター。

4
mfabish

**変数は二重逆参照です。 variableがアドレスのアドレスである場合、結果の式は* variableに格納されているアドレスの左辺値になります。

宣言の一部である場合、異なる意味を持ちます。

一方、タイプ**変数は、ポインターへのポインター、つまり、ポインターでもある別の変数のアドレスを保持できる変数を意味しますが、今回はタイプ 'type'の変数へのポインターです

2

これは、変数が2回逆参照されることを意味します。次のようなcharへのポインターへのポインターがあると仮定します。

char **変数= ...;

このポインターが指している値にアクセスする場合は、2回参照解除する必要があります。

**変数

2
Achim

別のポインターへのポインター

1
HZhang

**はポインターへのポインターです。これらは、文字列の配列に使用される場合があります。

1
Jake Petroules

ポインターへのポインターです。 arrayまたはconst char *(文字列)を指す場合に使用できます。また、Cocoaを使用したObjective-Cでは、これはNSError*を指すためによく使用されます。

1
user142019

ポインターへのポインター。 * xが何らかの変数のアドレスを含むことを意味する場合と同じように、mがint ** mとして表示されるよりもm =&xと言う場合

0
Kraken