C C++ OC指针常量和常量指针区别
看Effective Objective-C 2.0 编写高质量iOS与OS X代码的52个有效方法这本书的时候看到有一个说多用类型常量,少用#define预处理指令 ,在这里面有说到指针常量,之前学C C++的时候也遇到过, 现在算是将这些小结。
最重要的一句秘诀就是:*(指针) const(常量) 谁在前先读谁,谁在前谁不允许改变。
下面是C C++ OC中的例子,其中在OC中指针常量只能赋值一次,不能改变
- #import <Foundation/Foundation.h>
- int main(int argc, const char * argv[]) {
- @autoreleasepool {
- // C -----------------------------------------
- ,b=;
- //常量指针
- int const *p1=&a;
- //指针常量
- int *const p2=&b;
- NSLog(@"p1=%d p2=%d a=%d b=%d",*p1,*p2,a,b);
- //改变指针 将p1指向a p1指针变量存的地址改变 b的地址改为a的地址
- p1=&b;
- NSLog(@"p1=%d p2=%d a=%d b=%d",*p1,*p2,a,b);
- //改变变量
- *p2=; // p2 指针变量存的地址不变 改变的是p2指的变量的值
- NSLog(@"p1=%d p2=%d a=%d b=%d",*p1,*p2,a,b);
- // OC------------------------------------------
- NSString *str = @"abc";
- NSString *str2=";
- NSLog(@"str的地址:%p 指向变量的地址:%p 指向变量值:%@",&str,str,str);
- NSLog(@"str2的地址:%p 指向变量的地址:%p 指向变量值:%@",&str2,str2,str2);
- NSString const * strp=str;
- NSLog(@"strp=%@ str=%@ str2=%@",strp,str,str2);
- strp=str2;
- NSLog(@"strp=%@ str=%@ str2=%@",strp,str,str2);
- //在oc中NSObject类型指针常量赋值 无法改变常量
- NSString *const strp1=str2;
- NSLog(@"strp1=%@ str=%@ str2=%@",strp1,str,str2);
- str2=@"xyz";
- NSLog(@"strp1=%@ str=%@ str2=%@",strp1,str,str2);
- }
- ;
- }
- #include <iostream>
- using namespace std;
- int main(int argc, const char * argv[]) {
- string str1 = "abc";
- ";
- //常量指针
- string const *str1Prt = &str1;
- //指针常量
- string * const str2Prt = &str2;
- // 获取str1Prt 指针存的地址、指向的地址 &str1Prt是自身的地址
- cout << str1Prt << " " << *str1Prt << endl;
- //改变指针
- str1Prt = &str2;
- cout << str1Prt << " " << *str1Prt << endl;
- cout << str2Prt << " " << *str2Prt << " " << str1 << " " << str2 << endl;
- //改变变量
- *str2Prt = "fff";
- cout << str2Prt << " " << *str2Prt << " " << str1 << " " << str2 << endl;
- ;
- }
C C++ OC指针常量和常量指针区别的更多相关文章
- C和指针 第三章 指针常量与常量指针
c语言中声明常量的两种方式 const int value int const value 如果要声明常量的指针,即指向常量的指针,则可以参考上面的常量声明修改一下 const int *ptr in ...
- c++ 指针常量,常量指针
当const遇到指针 一般来说,const修饰指针可以分为下面的集中情况. 描述 例子 含义 备注 const在*的左边 const int *b=&a; int const *b=& ...
- C++中指针常量和常量指针的区别
在C++学习使用过程中,每个人都不可避免地使用指针,而且都或多或少的接触过常量指针或指针常量,但是对这两个的概念还是很容易搞糊涂的. 本文即是简单描述指针常量和常量指针的区别. 常量指针 定义: 又叫 ...
- 【转】C++易混知识点1: 指针常量和常量指针的区别,附有详细案例解释
熟悉C++也已经有一些年头了,今天突然翻出当年浏览的书籍,对一些概念居然生疏了,指针常量和常量指针由于 指针 这一特殊的对象而变得难以区别.因此,在思考再三之后,决定写下该篇总结,加强对他们的区别: ...
- 【转】const int *p和int * const p的区别(常量指针与指向常量的指针)
[转]作者:xwdreamer 出处:http://www.cnblogs.com/xwdreamer 对于指针和常量,有以下三种形式都是正确的: const char * myPtr = &am ...
- C++ 指针常量和常量指针
1.指针常量(*const):对应指针变量,即指针本身是常量,指针指向的内容可以被修改. 2.常量指针(const*):常量的指针,即指针指向的内容不能被修改,但指针本身是变量,可以被修改.
- c语言常量指针赋值给变量指针导致警告
常量指针定义:常量是形容词,指针是名词,以指针为中心的一个偏正结构短语.这样看,常量指针本质是指针,常量修饰它,表示这个指针乃是一个指向常量的指针.指针指向的对象是常量,那么这个对象不能被更改.常量指 ...
- 数组/指针/const/字符串常量的使用传值问题
#include<stdio.h> #include<string.h> int main() { ] = "abcd"; //常指针a指向字符串常量&qu ...
- 再学C/C++ 之 指针常量 和 常量指针
(1)指针常量,将指针的指向当成常量.即指针变量的值只能在定义的时候初始化,定义后不能修改,也就是说不能改变指针变量的指向.但是不影响所指对象的访问特征.其定义形式为: 类型 * const 指针 / ...
- c++中指针常量,常指针,指向常量的常指针区分
const char * myPtr = &char_A;//指向常量的指针 char * const myPtr = &char_A;//常量的指针 const char * con ...
随机推荐
- @Configurable
spring的一个注解,用来自动注入bean的注解,不需要通过BeanFactory去获取
- c++实验6 递归
1 利用递归设计此函数. int p(int a,int b) { if(a>=b) ; else ; } //粘贴测试数据及运行结果: //测试数据 int main() { cout < ...
- OCP考试题库更新,052最新考题及答案整理-第8题
8.Which two are true about the Fast Recovery Area (FRA)? A) It should be larger than the database. B ...
- css3旋转动画
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- [Objective-C语言教程]扩展(30)
类扩展与类别有一些相似之处,但它只能添加到编译时具有源代码的类中(类与类扩展同时编译). 类扩展声明的方法是在原始类的实现块中实现的,因此不能在框架类上声明类扩展,例如Cocoa或Cocoa Touc ...
- 【Qt】VS2010编译Qt5.3.2 64bit
1. 为什么要这么做 在Windows下,Qt官网默认提供的二进制版本大多是32位,目前(2015.01.24)只对VS2013提供了64位版本,如下图所示: 为了适应我目前安装的VS2010 IDE ...
- 序列化库MessagePack应用(C++)
介绍 MessagePack(简称msgpack)是一个小巧而高效的序列化/反序列化库,支持多种开发语言.官方网站:http://msgpack.org/ . 下面是官方的一个简介: It's lik ...
- KMP算法再解 (看毛片算法真是人如其名,哦不,法如其名。)
KMP算法主要解决字符串匹配问题,其中失配数组next很关键: 看毛片算法真是人如其名,哦不,法如其名. 看了这篇博客,转载过来看一波: 原博客地址:https://blog.csdn.net/sta ...
- 设计简单登录界面(Java web)
程序设计思想: 在Input.jsp中创建一个表格里边分别是课程名称,任课老师,教学地点,并分别用三个文本框来接受输入的三个属性, 并传到另外的Jsp页面中,又来接受三个数据,并判断传来的教师,与教室 ...
- SQL Server——存储过程(Stored Procedure)、事物、触发器
存储过程(proc 或 procedure) 存储过程(Stored Procedure),计算机用语,是一组为了完成特定功能的SQL语句集,是利用SQL Server所提供的Transact-SQL ...