Looking for pointers Answers? Try Ask4KnowledgeBase
Looking for pointers Keywords? Try Ask4Keywords

pointersポインタの使い方


備考

このセクションでは、ポインタの概要と、開発者がそれを使用する理由について概要を説明します。

また、ポインタ内の大きなテーマについても言及し、関連するトピックにリンクする必要があります。ポインタのドキュメントは新しいので、それらの関連トピックの初期バージョンを作成する必要があります。

ポインタの使い方

ポインタは、別の変数のアドレスを格納する変数です。言語機能として、次のようなプログラミング言語がありますが、これらに限定されません。

  • 行こう
  • C / C ++
  • アダ
  • パスカル
  • C#(特定の制約の下で利用可能)
  • COBOL
  • FORTRAN

C / C ++ポインタを使い始めるには、以下の手順に従ってください

  1. Minimalistic GNU for Windowsのようなコンパイラをインストールしてください。http://www.mingw.org/wiki/Getting_Started

  2. コマンドラインでg ++バイナリのインストールフォルダに移動します:

    C:\MinGW\bin>
     

3.テキストファイルを作成し、このC ++プログラムを作成します。

#include <iostream>

int main () {

   int  pointed=0;
   int* ptr = & pointed;

   std::cout<<"Address of pointed variable is: "<<ptr<<std::endl;

   return 0;
}
 
  1. pointer.cppとして保存します。5.コマンドプロンプトでコマンドを実行します

g ++ -o pointer.exe -c pointer.cpp

  1. 作業ディレクトリでは、実行ファイルをpointer.exeとして取得します。実行時にこのexeを実行すると、次のような出力が表示されます

ポイント変数のアドレスは0x7e892dac0a0cです。

上記の出力を受け取った場合は、最初のポインタプログラム

ポインタとは何ですか?

これは基本的にメモリ内の変数のアドレスです。これにより、変数に間接的にアクセスすることができます。したがって、ポインタを使用して、変数のアドレス(およびポインタの逆参照によるその値)について話すことができます。それらは、その値ではなくメモリの場所のアドレスを処理したいときに便利です。

Cの次の簡単なスワップ機能を考えてみましょう。

void Swap(int firstVal, int secondVal)
{
 int tempVal = firstVal;
 firstVal = secondVal;
 secondVal = tempVal;
}
 

今私たちが次のコードを持っている場合、メインになります:

.
.
int a = 9,b = 100;
swap(a,b);
//print a and b
.
.
 

aとbの値は、メイン関数にその値を出力することで明らかになるように変更されません。変数ab 値を渡すのではなく、スワップ関数を正しく実装するために、変数a と変数b のアドレスを次のように渡します。

swap(&a,&b);
 

演算子& は、変数のアドレスを返します。そのように使用されます:

int *address_of_a = &a;
 

int *address_of_a は、変数address_of_a 整数変数を指し示す(アドレスを格納する)ことを述べている。

今私たちの正しいスワップ関数は次のようになります:

void Swap(int *firstaddress, int *secondaddress)
{
 int tempVal = *firstaddress;
 *firsaddress = *secondaddress;
 *secondaddress = tempVal;
}
 

ここで交換された値はmain関数に反映されます:

int a = 9,b = 100;
swap(&a,&b);
//print
 

元の変数を持たない場合は、 * を使用してポインタを逆参照できます。ある関数で元の変数を持たず、アドレスがポインタ変数int *x ます。 value = *x としてメモリアドレスの値に簡単にアクセスできます。

私たちは、ポインタを持っていなかった場合、我々はを参照することによりパスをエミュレートすることができませんでしたC ので、 C 値渡しされます。ポインタを使用してもint *firstaddress, int *secondaddress は変数ab アドレスを持つ作成されたローカルポインタ変数だけなので、 エミュレートできることにint *firstaddress, int *secondaddress てください。