zoukankan      html  css  js  c++  java
  • C++之指针

     1 #include <iostream>
     2 #include <string>
     3 #include <vector>
     4 
     5 
     6 using  namespace std;
     7 
     8 int main()
     9 {
    10 
    11     string s("hello world!"); //定义一个字符串并初始化
    12     string *sp=&s; //定义一个指针变量指向字符串地址
    13     string* ps; //指针也可以这样定义
    14     string* ps1,ps2l; //此时定义指针时ps1是指针变量 ps2是普通变量
    15     cout<<s<<endl;
    16     cout<<*sp<<endl;
    17     //定义指针
    18     vector<int> *pvec;
    19     int *ip1,*ip2;
    20     double *dp2;
    21     //
    22     int ival=1024;
    23     int *pi=0; //指针是0 不指向任何对象
    24     int *pi2=&ival;
    25     pi=pi2;
    26     //可以用一个常量初始化指针
    27     const int a=0;
    28     ip1=a;
    29     //是万能指针 可以指向任何一种类型
    30     void *pv;
    31     //指针的指针
    32     int x=1024;
    33     int *op=&x;
    34     int **op1=&op;
    35     cout<<**op1<<endl;
    36 
    37     //======================================================
    38     //使用指针访问数组
    39     const size_t arr_sz=5;
    40     int a[arr_sz]={9,2,4,6,8};
    41     int *p=a;//指针指向数组的第一个元素
    42     cout<<*a<<endl;
    43     cout<<*p<<endl;//输出
    44     //解引用
    45     int last=*(a+4);
    46     cout<<last<<endl;
    47 
    48     int *p1=a;
    49     cout<<*p1<<endl;
    50     //p[1]相当于指针的加法
    51     int j=p1[1]; //p=&a[0] p[1]=p+1
    52     cout<<j<<endl;
    53     //==========================
    54     //指针循环数组和迭代器循环向量比较
    55     for(int *pbegin=a,*pend=a+arr_sz;pbegin!=pend;pbegin++)
    56     {
    57         cout<<*pbegin<<endl;
    58     }
    59     //===========================
    60     vector<int> vec;
    61     vec.push_back(1);
    62     vec.push_back(2);
    63     vec.push_back(3);
    64     vec.push_back(4);
    65     vec.push_back(5);
    66     for(vector<int>::iterator iter=vec.begin();iter!=vec.end();iter++)
    67     {
    68         cout<<*iter<<endl;
    69     }
    70     //===============================================
    71     double a=1.2;
    72     double *p=&a;
    73     //如果一个指针指向常对象 必须是一个常量指针
    74     const double pi=3.14;
    75     //p=&p1; 错
    76     const double *cp;
    77     cp=&pi;
    78     cp=&a; //可以指向非常对象的指针 但是不能修改值
    79 
    80     //常指针;
    81     int  num=9;
    82     int *const cur=&num; //常指针之前必须进行初始化 并且只能指向这一个变量
    83     //指向常对象的常指针
    84     const double *const pi_p=&pi;
    85     return 0;
    86 }
  • 相关阅读:
    Context都没弄明白,还怎么做Android开发?
    Android中Drawable分类汇总
    查找首个非重复字符
    七个对我最好的职业建议(译文)
    Android:最全面的 Webview 详解
    Android开发之微信底部菜单栏实现的几种方法汇总
    android 底部菜单栏实现(转)
    Android实现顶部底部双导航界面功能
    Android BottomNavigationBar底部导航控制器的使用
    Android底部导航栏的四种实现
  • 原文地址:https://www.cnblogs.com/yh2924/p/12544011.html
Copyright © 2011-2022 走看看