オブジェクトの先頭にアスタリスクが2つあるとはどういう意味ですか?
**variable
ポインターへのポインターです。詳細については、以下を確認できます。 ポインターへのポインター
[〜#〜] 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
}
}
宣言では、ポインターへのポインターであることを意味します。
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
これは、変数がポインターへのポインターであることを意味します。
変数を宣言するときのポインターへのポインター。
宣言外で使用された場合のダブルポインター逆参照。
Cdeclを使用して、Cタイプを説明できます。
ここにオンラインインターフェースがあります: http://cdecl.org/ 。テキストフィールドに「int ** x」と入力し、結果を確認します。
ポインターへのポインター。
**変数は二重逆参照です。 variableがアドレスのアドレスである場合、結果の式は* variableに格納されているアドレスの左辺値になります。
宣言の一部である場合、異なる意味を持ちます。
一方、タイプ**変数は、ポインターへのポインター、つまり、ポインターでもある別の変数のアドレスを保持できる変数を意味しますが、今回はタイプ 'type'の変数へのポインターです
これは、変数が2回逆参照されることを意味します。次のようなcharへのポインターへのポインターがあると仮定します。
char **変数= ...;
このポインターが指している値にアクセスする場合は、2回参照解除する必要があります。
**変数
別のポインターへのポインター
**はポインターへのポインターです。これらは、文字列の配列に使用される場合があります。
ポインターへのポインターです。 array
またはconst char *
(文字列)を指す場合に使用できます。また、Cocoaを使用したObjective-Cでは、これはNSError*
を指すためによく使用されます。
ポインターへのポインター。 * xが何らかの変数のアドレスを含むことを意味する場合と同じように、mがint ** mとして表示されるよりもm =&xと言う場合