ホームページ  >  記事  >  バックエンド開発  >  配列ポインタの用途は何ですか?

配列ポインタの用途は何ですか?

coldplay.xixi
coldplay.xixiオリジナル
2020-06-11 16:20:554406ブラウズ

配列ポインタの用途は何ですか?

int *a[4]; //指针数组

ポインター配列は、複数のポインターを一度に宣言することと同じです。配列の各要素はポインタです。わかりやすいので、主に配列ポインタを見てみましょう

int (*p)[4]; //数组指针

配列ポインタは、一度に 1 つのポインタを宣言するのと同じです。このポインタが非常に特殊な配列を指しているだけです。

[] は * よりも優先度が高いため、配列ポインターを宣言するときに () を追加する必要があります。

例 1:

#include<stdio.h>#include<stdlib.h>void main()
{    //数组指针的用法,用处。
    int b[16]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};    int (*p)[4]; //该语句是定义一个数组指针,指针步长为4个int即16位。    //int *p2=&b;
    p=&b;    int i=0;    while(i<16)
    {
          printf("%d\t",(*p)[i]);          //printf("%d\t",*p2++);
          i++;
    }
}

printf("%d\t",(*p)[i]);出力配列 b を走査します;
配列ポインターは次のとおりです。キング オブ ダンス ゾンビと同じで、弟がいます。n は弟の数です。添え字の値を通じて、特定の弟、つまり配列内の番号に直接アクセスできます。

配列ポインタの添字は自動的に増加し (i)、ポインタのポイントは変更されません。

これは整数ポインターを使用して直接実装でき、より便利で簡潔です。上記のコメントセクションを参照してください。

例 2: 例 1 の while() ステートメントを置き換えます。

  while(i<4)
    {
          printf("%d\t",(*p++)[0]);
          i++;
    }

例 2 は 1 5 9 13 を出力します。これは、ポインターが一度に 4 int.16 バイト移動するのと同等です。

配列ポインタがインクリメントされると (*p)、ポインタは移動 sizeof (type) を指します。

実際、上記の文は他の種類のポインタにも当てはまります。

int *p;

など //ポインタは整数ポインタである int を指します。整数ポインタの特徴は何ですか?整数変数を保存できるアドレスです。使用は何ですか?つまり、p は次の int 型の数値を指すことができます。では? 多くの場合、ポインタは配列を指すために使用されます。これらはすべて int 型なので、ステップ サイズが導出されます。整数ポインターのステップ サイズは sizeof(int) で、4 バイトです。

//同様に、float ポインター、char ポインターなどを取得できます。 。 。

同様に配列ポインタも取得できますが、その特徴は何でしょうか?配列の最初のアドレスを保存します。使用? p は次の配列を指すことができます。それで? 2 次元配列を指すために使用します。 2 次元配列の各要素は同じ型 (すべて int 配列) であるため、ステップ サイズを推定できますか? sizeof(int[4])、つまり 16

//率直に言うと、これは配列型

例 3:配列ポインタは 2 次元配列を指します。

#include<stdio.h>#include<stdlib.h>void main()
{    int a[3][4]={{1,2,3,4},{11,12,13,14},{21,22,23,24}};    int (*p)[4]; //该语句是定义一个数组指针,指针步长为4个int即16位。
    p=&a;    int i=0;    while(i<3)
    {        //printf("%d\t",(*p)[i]);        //数组指针,指向的是一个数组整体,相当于指针也带了下标,当执行i++操作时,下标+1,得到该数组的下一个元素,        //在该例中,指针没有位移,所以依次输出为1 2 3
        printf("%d\t",(*p++)[0]);        //整型数组类型的指针,指向的是一个数组整体,当执行*p++操作时,指针位移该数组长度的位数        //在该例中,即指针位移4个int的长度,所以输出是1 11 21
        i++;
    }
}

推奨チュートリアル: 「C ビデオ チュートリアル

以上が配列ポインタの用途は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。