zoukankan      html  css  js  c++  java
  • 【c++】指针

    指针的定义和初始化

    //定义一个strA初始化为"ABC"
    string strA("ABC");
    //定义一个指向string类型的指针p1,并初始化指向strA对象
    //*操作符表明p1是一个指针变量;&是取地址操作符
    string *p1 = &strA;
    //*是取值操作符,取p1指针指向的strA对象的值
    cout << *p1 << endl;//ABC
    //通过指针可以修改指向对象的值
    cout << strA << endl;//ABC
    *p1 = "D";
    cout << strA << endl;//D

    连续声明多个指针容易导致混淆

    //p2是指针变量,p3不是指针变量
    string *p2, p3;

    指针操作

    //定义一个指针
    string *p1;
    string strA("ABC");
    //指针指向strA对象
    p1 = &strA;
    string strB("D");
    //通过指针修改strA对象
    *p1 = "ABC-";
    //指针指向strB对象
    p1 = &strB;
    //通过指针修改strB对象
    *p1 = "D-";
    //输出
    cout << strA << endl;//ABC-
    cout << strB << endl;//D-

    指向指针的指针

    int ival = 1024;
    int *pi = &ival;
    int **ppi = &pi;
    cout << ival << endl;//1024
    cout << *pi << endl;//1024
    cout << **ppi << endl;//1024

    使用指针访问数组元素

    int ia[6] = { 5,2,4,6,8,9 };
    int *ip = ia;//指向ia[0]  
    cout << *ip  << endl;//5
    ip = &ia[4];//指向ia[4]  
    cout << *ip << endl;//8
    cout << *(ip+1) << endl;//9 //指向ia[5]  

    使用指针遍历数组

    const int iSize = 10;
    int iArr[iSize] = { 0,1,2,3,4,5,6,7,8,9 };
    //指向第一个元素的指针
    int *iBegin = iArr;
    //指向最后一个元素后面的指针
    int *iEnd = iArr + iSize;
    //循环输出数组元素
    for (int *ip = iBegin; ip != iEnd; ip++)
    {
        cout << *ip << endl;
    }
    //合起来写
    for (int *ip = iArr; ip != (iArr + iSize); ip++)
    {
        cout << *ip << endl;
    }
  • 相关阅读:
    Linux eclipse 编译C++
    poj2774 Long Long Message(后缀数组or后缀自动机)
    ural 1297 Palindrome(Manacher模板题)
    bzoj 2049 Cave 洞穴勘测(LCT)
    codeforces 519E A and B and Lecture Rooms(LCA,倍增)
    hdu3830 (二分+LCA)
    codeforces 337D Book of Evil(dp)
    codeforces 22C System Administrator(构造水题)
    codeforces 144D Missile Silos(最短路)
    codeforces 505B Mr. Kitayuta's Colorful Graph(水题)
  • 原文地址:https://www.cnblogs.com/KMould/p/15152097.html
Copyright © 2011-2022 走看看