Const *ptr ptr
1. const int *ptr = NULL; <=> int const *ptr = NULL;
1) 表示指向符号常量的指针变量,指针变量本身并非const所以可以指向其他变量。
2) const 的作用可以看作是“禁止通过*ptr"来改变被ptr指向的变量的值,但被指向的变量 其本身能否改变需要看其定义。
eg: const int i = 1, int j = 2;
ptr = &i; // ok
*ptr = 27 // error
i = 2 // error i is const
ptr = &j; // ok
*ptr = 28; // error
j = 3; // ok
2. const int *ptr vs int * const ptr;
1) 要区分以上两种形式重点看const与*的相对位置:
const在*之前表示”指向符号常量的指针“
const在*之后表示”指向int类型变量的常量指针“
注意:若声明成 int * const ptr = NULL;则ptr的值不可改即不可再指向其它变量,
但可以通过*ptr修改其指向的变量(如果指向了的话)。
2)识记技巧
看const修饰的是*ptr还是ptr?
当 const 在 * 之前可以认为 const修饰的是 *ptr,此时*ptr的”值“不可变,ptr的值可变
当 const 在 * 之后可以认为 const修饰的是 ptr,此时ptr的值不可变,*ptr的值可变
const修饰谁,谁的值就不可再变。
3. const int * const ptr;
1) 表示”指向int型符号常量的常量指针“
2) const 即修饰了 *ptr 表示不可通过*ptr修改其指向变量的值
又修饰了 ptr 表示ptr中的值不可再修改即不能再指向其他变量
Const *ptr ptr的更多相关文章
- 关于 const char *ptr,char const *ptr,char *const ptr 的讨论
对于每个做C/C++的伙伴来说,面试中少不了关于const 的考察,尤其是对于刚毕业的新人. 今天听见同事在讨论这个问题,就随手写一下自己的理解.希望对大家又所帮助. 首先来说一下char *ptr: ...
- Why am I able to change the contents of const char *ptr?
http://stackoverflow.com/questions/3228664/why-am-i-able-to-change-the-contents-of-const-char-ptr I ...
- [OpenCV] Ptr类模板
1.C++泛型句柄类 我们知道在包含指针成员的类中,需要特别注意类的复制控制,因为复制指针时只复制指针中的地址,而不会复制指针指向的对象.这将导致当两个指针同时指向同一对象时,很可能一个指针删除了一对 ...
- opencv中ptr的使用
#include <QCoreApplication> #include<stdio.h> #include<opencv2/highgui/highgui.hpp> ...
- DNS详解: A记录,子域名,CNAME别名,PTR,MX,TXT,SRV,TTL
DNS DNS,Domain Name System或者Domain Name Service(域名系统或者域名服务).域名系统为Internet上的主机分配域名地址和IP地址.由于网络中的计算机都必 ...
- *(ptr++) += 123
*(ptr++) += 123; 等价于:*(ptr) = *(ptr) + 123; ptr++; 而不是:*(ptr++) = *(ptr++) + 123;程序员面试宝典p32 #include ...
- const用法小结
const与指针 char *const p --> char *(const p) --> 指针常量 char const *p --> char (const *p) --> ...
- 如何牢记C/C++中const的用法?
(下面以 typename 表示C/C++内某一类型 我常常会搞混 const 放在 typename* 的前面和后面的区别,今天特地查看了它们两个各自的含义,总结了一下: const typenam ...
- C++ const、volatile、mutable的用法 (转)
const.volatile.mutable的用法 鸣谢作者: http://blog.csdn.net/wuliming_sc/article/details/3717017 const修饰普通 ...
随机推荐
- js动态改变iframe的高度
js动态改变iframe的高度的写法 〈iframe id="docDetail" width="100%" height="200" ...
- 使用Vulcan工具构建真实的业务负载进行网络压力测试,满足SD-WAN,White-box Switch的Performance,QoE,SLA测试要求
工具链接# https://xenanetworks.com/vulcan/ 使用Vulcan工具,可构建真实的业务负载进行网络压力测试 满足Performance,QoE,SLA等测试要求 硬件指 ...
- 【数据库开发】is not allowed to connect to this MySQL server解决办法
ERROR 1130: Host '192.168.1.3′ is not allowed to connect to this MySQL server这是告诉你没有权限连接指定IP的主机,下面我们 ...
- 使用自定义Comparator对TreeSet中的数据进行多条件排序
代码记录(需求:根据店铺等级和店铺到某个点的距离进行排序,其中店铺等级由高到低,距离由近及远) 需要排序的对象Store,Store.java package com.zhipengs.work.te ...
- python线程定时器Timer(32)
相对前面几篇python线程内容而言,本片内容相对比较简单,定时器 – 顾名思义,必然用于定时任务. 一.线程定时器Timer原理 原理比较简单,指定时间间隔后启动线程!适用场景:完成定时任务,例如: ...
- Java变量与数据类型之三:数据类型与转义字符
大家好,小乐又来了,上一篇:乐字节Java变量与数据类型之二:Java常量与变量, 今天接着讲Java变量与数据类型之三:数据类型与转义字符 一.数据类型 1.定义 Java是一种强类型语言,针对每种 ...
- 前端通过将json转成excel文件下载
方法一: 将table标签,包括tr.td等对json数据进行拼接,将table输出到表格上实现,这种方法的弊端在于输出的是伪excel,虽说生成xls为后缀的文件,但文件形式上还是html,代码如下 ...
- Java Foreach用法
java中的while.for.if.switch等用法和c语言差不多,所以我们关注下foreach就行了. 一.创建ForeachTest.java public class ForeachTest ...
- java--带参方法 递归阶乘
package com.test.day01; // public class TestParam { public void f1(int n){ n =0; } public static voi ...
- Anaconda安装报错
通用解决方案:先卸载,然后重新安装(注意安装路径全英文且不要有空格),勾选添加环境变量选项