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

本文深入探讨了指针的基本概念及使用技巧,包括指针的类型对应、常见字符串操作、不同类型的指针特性以及引用的概念。同时介绍了如何避免常见的指针误用问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值