现在的位置: 首页 > 综合 > 正文

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

2012年10月24日 ⁄ 综合 ⁄ 共 1356字 ⁄ 字号 评论关闭

指针要注意类型的对应,不要出现类似 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;

抱歉!评论已关闭.