c++数据类型--指针、字符串、const、引用

指针要注意类型的对应,不要出现类似 int * 转向 int 的操作。
int **p = 0;   //指向指针的指针,不让它指向任何地方
int *p1 = *p;

int array[10];
int *p1 = array;        //数组名指定数组首地址
int *p1 = &array[0];  //指向第一个元素对应的地址

字符串的常见操作:
遍历串

int string_length(const char *st)
{
    int cnt = 0;
    if(st)                          //判断st是否指向某对象
       while(*st++)            //先执行st++, 再取其值,即判断串的每一个字符是否为0(末尾为0)
           ++cnt;
    retrun cnt;
}

引用串
const char *st = "aaaaaaaaaaaa";
const char *p = st;         //此处加一个指针,对p进行操作,保留st的首指针
while(*p++)
...

const

int i = 8;
const int * a = &i;   //指向常整型的指针,指针指向地址可变,但值不可变。(ok: a = &i2;  error: *a = 9;)
int * const a = &i;   //指向int *型的常指针,指针指向地址不可变,但值可变。(ok: *a = 9;  error:a = &i2; )
const int * const a = &i  //地址、值都不可变

例如:
const int ic;   //错误,没有初始化
const int *ic;   //正确,为一个指针(只是指向类型为const int),不用初始化
int * const ic;  //错误,没有初始化,为一个常量(类型为int *),所以要初始化

int i  = 8;
const int ic = i;                            //ok
const int *pic = &i;                       //ok (const int 可以指向int, 也可以指向const int)
const int *pic = ⁣                     //ok
int * const pic = &i;                      //ok(int *只能指向int *, 不能指向const int *)
int * const pic = ⁣                    //error
const int * const pic2 = ⁣         //ok

引用

int *pi = NULL;
int *&rval = pi;   //指向指针的引用

常引用
* 可以指向不可寻址的值,如常量。
* 指向不同的类型(只要从一种类型可以转到另一种类型)
double dval = 2.88;
const int &ir = 1024;
const int &ir2 = dval;    //编译器先将dval转化成int, 再将引用指向它
const int &ir3 = dval+1.0;

const int ival = 1024;
const int *const &pi_ref = &ival   (?写法还是不太明白)

布尔
布尔值不可以被声明为signed, unsigned, short, long
例如下面的写法是错误的:
short bool found = false;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值