C++指针及字符串模版和例题

1、二维数组举例

#include <iostream>
using namespace std;
int main(){
    int array[3][3]={{11,12,13},{21,22,23},{31,32,33}};
    for(int I=0;i<3;i++}{
       for(int j=0;j<3;j++)
            cout<<*(*(array2+i)+j)<<"";
            cout<<endl;
     }
     return 0;
}

2、指向常量的指针做形参

#include <iostream>
using namespace std;
const int N=6;
void print (const int *p,int n);
int main(){
    int array[N];
    for(int I=0;i<N;i++)
      cin>>array[i];
    print(array,N);
    return 0;
}
void print(const int*p,int n){
    cout<<"{"<<*p;
    for(int I=1;i<n;i++)
       cout<<","<<*(p+i);
    cout<<"}"<<endl;
}

3、

#include <iostream>
using namespace std;
int main(){
     int array[10];
     int *search(int *a,int num);
     for(int i=0;i<10;i++)
     cin>>array[i];
     int *zeroptr=search(array,10);        //将主函数中数组的首地址传给子函数
     return 0;
}
int* search(int *a,int num){               //指针a指向主函数中定义的数组
     for(int i=0;i<num;i++)
     if(a[i]==0)
     return &a[I];                         //返回的地址指向的元素是在主函数中定义的
}//函数运行结束时,a[i]的地址仍然有效

4、通过指针访问类的静态数据成员

#include<iostream>
using namespace std;
class Point{
public:
  Point(int x=0,y=0):x(x),y(y){
      count++;
  }
  Point (const Point &p):x(p.x),y(p.y){
      count++:
  }
  ~Point(){count--;}
  int getX() const {return x;}
  int getY() const {return y;}
  static int count;
private:
  int x,y;
};
int Point::count=0;
int main(){
//定义一个int类型指针,指向类的静态成员
    int *ptr=&Point::count;
    Point a(4,5);
    cout<<"Point A:"<<a.getX()<<","<<a.getY();
    cout<<"Object count="<<*ptr<<endl;
    Point b(a);
    cout<<"Point B:"<<b.getX()<<","<<b.getY();
    cout<<"Object count="<<*ptr<<endl;
 return 0;
}

5、动态数组类

#include <iostream>
#include <cassert>
using namespace std;
class Point{   ...};
class ArrayOfPoints{       //动态数组类
public:
   ArrayOfPoints(int size):size(size){
      points=new Point[size];
   }
   ~ArrayOfPoints(){
      cout<<"Deleting..."<<endl;
      delete[] points;
   }
   Point &element(int index){
      assert(index>=0&&index<size);    //断言函数
      return points[index];
   }
private:
   Point *points;         //指向动态数组首地址
   int size;              //数组大小
};
int main(){
   int cout;
   cout<<"Please enter the count of points:";
   cin>>count;
   ArrayOfPoints points(count);             //创建对象数组
   //通过访问数组元素的成员
   points.element(0).move(5,0);
   //通过类访问数组元素的成员
   points.element(1).move(15,20);
   return 0;
}

6、计算arr中元素的平均值

#include <iostream>
#include <vector>
using namespace std;
double average(const vector<double> &arr){
     double sum=0;
     for (unsigned I=0;i<arr.size():i++)
        sum+=arr[i];
     return sum/arr.size();
}
int main(){
   unsigned n;
   cout<<"n=";
   cin>>n;
   vector<double> arr(n);
   cout<<"Please input"<<n<<"real numbers:"<<endl;
   for(unsigned I=0;i<n;i++)
       cin>>arr[i];
   cout<<"Average ="<<average(arr)<<endl;
   return 0;
}

7、用getline 输入字符串

#include <iostream>
#include <string>
using namespace std;
int main(){
    for(int I=0;i<2;i++){
      string city-state;
      getline(xin,city,',');
      getline(cin,stata);
      cout<<"City:"<<city<<" State:"<<state<<endl;
    }
    return 0;
}

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值