第四章 数组和指针

 

  • C++应尽量使用vector和迭代器,只有在强调速度才使用数组和指针。
  • const变量以及要到运行阶段才知道其值的const变量都不能用于定义数组的维数。
  • 现在C++采用string类型取代C风格字符串。
  • 取地址操作只能用于左值,因为只有当变量用作左值时,才能取其地址。
  • string* ps1,ps2;实际上只把ps1定义为指针,ps2并非指针,所以尽量写为:string *ps1,ps2;
  • int *pi=NULL;//ok,equivalent  int *pi=0;
  • 只要定义的多个变量具有相同的类型,就可以在for循环的初始化语句中同时定义他们。for(int a=1,b=0;;){}.
  • 标准库函数<cstring>中的strlen用于计算C风格字符串中字符的个数,不包括null结束符。strcat(str1,str2)str2连接到str1后面,并覆盖str1最后一位null
  • 可以用数组初始化vectorconst size_t arr_size=2;int int_arr[arr_size]={1,2};vector<int>ivec(int_arr,int_arr+arr_size);
  • char get_c;while(cin>>get_c){};接收标准输入,ctrl+z结束。

 

 

 

  • 指向const对象的指针

int a;  const int *ip=&a;

C++强制要求指向const对象的指针也必须具有const特征。不能使用const对象的指针修改基础对象,如果该指针指向的是一个非const对象,则可以用其他方法修改。可理解为指向const的指针自以为指向const的指针。

 

  • const指针

int num=0; int *const cur=&num;

cur是指向int型对象的const指针const指针的值不能修改,即不能使cur指向其他对象,但并不意味着不能使用该指针修改他指向对象的值。

 

  • typedef string *pstring;

const  pstring cstr;//最好写为pstring const pstring;

const修饰的是pstring的类型,这是个指针。语句语义即把cstr定义为指向string类型对象的const指针。等价于:

string *const cstr;

 

 

 

int ia[3][4];

//法1

int (*ip)[4]= ia;

//*ipint[4]类型——即ip是一个指向含有4个元素的数组指针

//法2

typedef int int_array[4];

int_array *ip = ia;

//2维数组的循环输出

for(int_array  *p=ia;p!=ia+3;++p)

{

for(int *q=*p;q!=*p+4;++q)

{

cout<<*q<<endl;

}

}

//其中法1和法2为同一个含义,不过21要更容易理解

//ip是一个指向含有4个元素的数组指针,即++ip可以指向下面第4int元素的地址

 

 

 

 

读入一组string类型的数据存储在vector中,再把该vector对象复制到字符指针数组

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值