0

私はC++を学んでおり、本でこれを見つけました:

#include <iostream>
using namespace std;

int main()
{
int Age = 30;
int* pInteger = &Age; // pointer to an int, initialized to &Age

// Displaying the value of pointer
cout << “Integer Age is at: 0x” << hex << pInteger << endl;

return 0;
}

この本によると、出力は Age が格納されているメモリ内のアドレスです。

しかし、本はこれについて話していません:

*pInteger = &Age;
 pInteger = &Age;

これら2つの割り当ての違いは何ですか?

4

5 に答える 5

6

あなたはこの行に混乱しているようです

int* pInteger = &Age; // pointer to an int, initialized to &Age

ここの*シンボルは、pInteger を int へのポインターとして宣言しています。これは、Age が int であるため許可されている Age のアドレスに初期化されます (割り当てられません)。

入力できます

*pInteger = 45;

そして、それは pInteger が指す整数に割り当てられます。

入力することもできます

int y = 35; 
pInteger = &y;

別の場所を指すようにポインターを再割り当てします。

于 2013-01-04T12:20:51.583 に答える
3

これを割ると分かりやすいかもしれません

 int* pInteger = &Age;

二段に下がる

 int* pInteger;

int へのポインタ型の変数をデラレしてから、

 pInteger = &Age;

Age のアドレスを pInteger に割り当てると、pInteger は特定の整数を指すようになります。

あなたが書いた場合

 *pInteger = 95;

pInteger が現在指しているものに新しい値を割り当てます。

あなたが書くとき

 int* pInteger = &Age;

変数を宣言して初期値を与えているため、明らかに似ているものとは異なります

  *pInteger = &Age;

これはpIntegerを使用していますが、宣言していないため、ここでAgeのアドレスを取得し、それをpIntegerが指すものに効果的に割り当てようとしています.intにアドレスを割り当てることは良いことではありません.

于 2013-01-04T12:22:16.177 に答える
2

int* pInteger = &Age;割り当てではなく、初期化です。ここでは、以下のように integer ではなく*、タイプ - の一部です。int**pInteger

あなたが尋ねる2つは割り当てです:

*pInteger = &Age;
 pInteger = &Age;

違いは、1 つ目は違法で、2 つ目は OK です。これは、 has &Agetypeint*に対し、*pIntegerhas typeであり、 anに anintを代入することは違法であるためです。ただし、タイプは であるため、代入は問題ありません。int*intpIntegerint*

于 2013-01-04T12:19:04.037 に答える
1

pIntegerは int へのポインターであり、最初のケースでは のアドレスに初期化Ageされ(意図した場合)、 2 番目のケースでは割り当てられます。int*pInteger = &Age;

于 2013-01-04T12:19:14.657 に答える
1

まず、型の変数を宣言して初期化しますint*

      int*     pInteger   =          &Age;
//| var type | var name |   | value of type "int*"  |

次に、割り当てを使用してみます。

          pInteger       =         &Age;
//| var of type "int*" |   | value of type "int*"  |
         *pInteger      =         &Age;
//| var of type "int" |   | value of type "int*"  |

int*キャストするまで、最後は正しくありませんint(目標が整数値のようなアドレスを使用することである場合)。単項演算子逆参照演算子*は、指定されたアドレスに何かが必要であることを意味します。

于 2013-01-04T12:29:31.997 に答える