C++学习篇------指针小结

是很久很久没有碰C++了,上次用可能还是大一的时候,重新看起C++ Primer Plus。这次来先简单讲讲指针

指针是C++很重要的一个东西,指针是一个变量,其存储的是值的地址,而不是值本身。

int a = 5;
int* b = &a;   //b就是int a的地址(&为取址符)

1、声明指针及初始化

指针是有类型的,可以知道这个指针指向的类型是占字节,从而分配地址空间。(虽然指向的类型不同,可以是char,可以是double,但str和ptr两个变量本身的长度相同,这两个地址的长度是相同的,具体是2个字节还是4个字节看具体计算机系统)

//typeName* pointerName
//e.g
char* str
double* ptr

记得声明指针以后要进行初始化。将地址赋值给指针。这里又会产生一个容易犯的小错误。

或者初始化可以用new,这样子会分配可用空间给int,配合delete释放内存

int* ptr = new int;
*ptr = 1001
delete ptr

2、对指针解引用

对指针解除引用意味着获得指针指向的值。对指针应用解除引用或间接值运算符( * )来解除引用。因此,如果像上面的例子中那样,pn 是指向 bubble 的指针,则 *pn 是指向的值。
char* pn;
char bubble = 'a';
pn = &bubble;
cout << *pn // 会输出bubble的值‘a’
*pn = 'S' // 会将bubble的值变成‘S’

其实数组表示法也是对指针解除引用,pn[0]与*pn是一样的。!!!但一定不能对没有初始化为适当地址的指针解除引用。

3、指针算数

4、数组表示发和指针表示法

最后出一道题,如果能做出来说明指针的基本使用应该是没有问题了

int arr[6] = {1,2,3,4,5,6};
int* ptr = (int*)(&arr + 1);
cout << *(ptr - 1);

//得到的结果为6

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值