インターネットでさまざまなことを読んで混乱しました。すべてのウェブサイトが異なることを言っているからです。
*
参照演算子と逆参照演算子について読みました&
。または、参照とは、ポインターが変数を指すようにすることを意味し、逆参照とは、ポインターが指す変数の値にアクセスすることです。だから私は混乱しました。
「参照と逆参照」について、簡潔かつ完全な説明を得ることができますか?
インターネットでさまざまなことを読んで混乱しました。すべてのウェブサイトが異なることを言っているからです。
*
参照演算子と逆参照演算子について読みました&
。または、参照とは、ポインターが変数を指すようにすることを意味し、逆参照とは、ポインターが指す変数の値にアクセスすることです。だから私は混乱しました。
「参照と逆参照」について、簡潔かつ完全な説明を得ることができますか?
参照とは、既存の変数のアドレスを (& を使用して) 取得し、ポインター変数を設定することを意味します。有効であるためには、ポインターは、アスタリスクなしで、ポインターと同じ型の変数のアドレスに設定する必要があります。
int c1;
int* p1;
c1 = 5;
p1 = &c1;
//p1 references c1
ポインターの逆参照とは、* 演算子 (アスタリスク文字) を使用して、ポインターが指すメモリ アドレスから値を取得することを意味します。ポインターが「指す」変数ですが、ポインターが正しく設定されていない限り、これが当てはまるという保証はありません。ポインターが指す変数の型は、最も外側のアスタリスクを除いた型です。
int n1;
n1 = *p1;
無効な逆参照により、クラッシュが発生する場合と発生しない場合があります。
無効な参照は、クラッシュよりもコンパイラ エラーを引き起こす可能性が高くなりますが、これをコンパイラに依存することはお勧めできません。
参考文献:
http://www.codingunit.com/cplusplus-tutorial-pointers-reference-and-dereference-operators
& is the reference operator and can be read as “address of”.
* is the dereference operator and can be read as “value pointed by”.
http://www.cplusplus.com/doc/tutorial/pointers/
& is the reference operator
* is the dereference operator
http://en.wikipedia.org/wiki/Dereference_operator
The dereference operator * is also called the indirection operator.
私はいつもそれらが反対の意味で使われているのを聞いてきました:
&
は参照演算子です -- オブジェクトへの参照 (ポインター) を提供します。
*
逆参照演算子です。参照 (ポインター) を受け取り、参照先のオブジェクトを返します。
まず、それらを後方に持っています:&
は参照であり、*
逆参照です。
変数を参照するということは、変数のメモリ アドレスにアクセスすることを意味します。
int i = 5;
int * p;
p = &i; //&i returns the memory address of the variable i.
変数の逆参照とは、メモリ アドレスに格納されている変数にアクセスすることを意味します。
int i = 5;
int * p;
p = &i;
*p = 7; //*p returns the variable stored at the memory address stored in p, which is i.
//i is now 7
以下の説明を見つけてください。
int main()
{
int a = 10;// say address of 'a' is 2000;
int *p = &a; //it means 'p' is pointing[referencing] to 'a'. i.e p->2000
int c = *p; //*p means dereferncing. it will give the content of the address pointed by 'p'. in this case 'p' is pointing to 2000[address of 'a' variable], content of 2000 is 10. so *p will give 10.
}
結論 :
&
[アドレス演算子]は参照に使用されます。*
[スター演算子]は、逆参照に使用されます。