C ++ベース(8) - ポインタの概念、定義及び計算

アクセスモードメモリ空間

  • 変数名にアクセスすることにより、
  • アドレスでアクセス。

コンセプトポインタ

  • ポインター:メモリアドレス、メモリユニットへの間接的なアクセス。
  • ポインタ変数:アドレスを格納するための変数。

定義されたポインタ変数

//例 
static int i;
static int*ptr = &i;    //ptr为指向int变量的指针
*ptr = 3;    //指针变量的使用,i赋值为3

操作のアドレスに関連付けられている - 「*」と「&」

  • ポインタ演算子:*
  • アドレス演算子:&

初期化ポインタ変数

  • 構文:* ストレージ・タイプのデータ・タイプのポインタ=初期アドレスの名前。

    例:int型* PA =&;

  • 注意事項:

    初期値として変数アドレスは、変数、ポインタの前に初期化されなければならないときに宣言された、ポインタ変数の型がなければならないタイプに対応します

    あなたは別の変数へのポインタを初期化するために有効なポインタ値を持つことができます。

    静的ポインタを初期化するために内部の非静的変数を使用しないでください。

ポインタ変数の代入演算子

  • 構文:ポインタアドレス名=

  • 「アドレス」が格納されるポインタ型のデータ型が一致している必要があります。

  • でなければならないポインタ変数の値に割り当てられたアドレスの定数または変数ではなく、普通の整数。

    例えば、開始アドレス&変数やオブジェクトを取得するためのアドレス計算は、リターンアドレスの動的なメモリ割り当ての成功を定義されています。

    ポインタがヌル・ポインタを示す例外は0の整数であってもよいです。

  • 許可のvoidポインタ型に定義または宣言ポインタをアドレスポインタは、オブジェクトの任意のタイプを与えることができます。例void *型genneral。

NULLポインタnullptr

C ++ 11 nullptrキーワードの使用は、NULLポインタのセキュリティを入力し、より正確な表現です。

ポインタのconstポインタ定数

あなたが一定のポインタ指示対象の値を変更することはできませんが、ポインタ自体を変更することができる、追加のオブジェクトを指し示すことができます。

定数のポインタ型

ステートメントポインタ定数場合は、ポインタ値そのものを変更することはできません。

//指针的定义、赋值和使用
#include<iostream>
using namespace std;
int main(){
    int i;
    int *ptr = &i;  //取i的地址赋给指针ptr
    i = 10;
    cout << "i = " << i << endl;
    cout << "*ptr = " << *ptr << endl;  //输出int型指针ptr所指地址的内容
    return 0;
}
//运行结果:
i = 10
*ptr = 10
    
//void类型指针的使用
#include<iostream>
using namespace std;
int main(){
    //!void voidObject; 错,不能声明void类型的变量
    void *pv;  //对,可以声明void类型的指针
    int i = 5;
    pv = &i;  //void类型指针指向整型变量
    int *pint = static_cast<int*>(pv);  //void指针转换为int指针
    cout << "*pint = " << *pint << endl;
    return 0;
}
//运行结果:
*pint = 5
    
//指向常量的指针
int a;
const int *p1 = &a;  //p1是指向常量的指针
int b;
p1 = &b;  //正确,p1本身的值可以改变
*p1 = 1;  //错误,不能通过p1改变所指的对象

//指针类型的常量
int a;
int *const p2 = &a;
p2 = &b;  //错误,p2是指针常量,值不能改变

ポインタ演算

- 計算++ポインタ、減算ポインタ整数を含みます。

  • ポインタPプラスまたはマイナスのn

    有意性は、n番目のデータの前後の現在の位置に開始位置ポインタがあります。

  • ++ポインタ、 - 計算

    次の1または前のポイントを意味完全なデータ開始。

  • 演算の結果は、データの整合性の開始位置へのポインタは常にポイントのデータ型によって異なります。

  • データの同じ型へのポインタは、連続して格納するとき、整数加算と減算ポインタのインクリメントとデクリメントは理にかなっています。

関係演算子のポインタ型

  • 同じタイプのは、操作データポインタ間の様々な関係であってもよいです。
  • ポインタは、異なるデータ型を指し、ポインタ変数整数一般的な動作との関係は無意味です。
  • ポインタが等しいかまたは等しくないと算術ゼロとの間の関係であってもよいです。例えば、P == 0またはp!= 0。
公開された76元の記事 ウォン称賛30 ビュー5854

おすすめ

転載: blog.csdn.net/weixin_45926367/article/details/104390123