博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C C++ OC指针常量和常量指针区别
阅读量:6705 次
发布时间:2019-06-25

本文共 2127 字,大约阅读时间需要 7 分钟。

看Effective Objective-C 2.0  编写高质量iOS与OS X代码的52个有效方法这本书的时候看到有一个说多用类型常量,少用#define预处理指令 ,在这里面有说到指针常量,之前学C C++的时候也遇到过, 现在算是将这些小结。

最重要的一句秘诀就是:*(指针)   const(常量)  谁在前先读谁,谁在前谁不允许改变。

下面是C C++ OC中的例子,其中在OC中指针常量只能赋值一次,不能改变

#import 
int main(int argc, const char * argv[]) { @autoreleasepool { // C ----------------------------------------- int a=3,b=1; //常量指针 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=5; // p2 指针变量存的地址不变 改变的是p2指的变量的值 NSLog(@"p1=%d p2=%d a=%d b=%d",*p1,*p2,a,b); // OC------------------------------------------ NSString *str = @"abc"; NSString *str2=@"123"; 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); } return 0;}

#include 
using namespace std;int main(int argc, const char * argv[]) { string str1 = "abc"; string str2 = "345"; //常量指针 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; return 0;}

 

转载地址:http://ecflo.baihongyu.com/

你可能感兴趣的文章
数组逆序重放(链表头插法练习)
查看>>
windows server 2008 安装实录
查看>>
安装卸载图形界面
查看>>
修改EXCHANGE默认的收发邮件大小是10M
查看>>
软raid的详细配置讲解 raid 0
查看>>
large-scale analysis of malware downloaders
查看>>
一道中级运维的shell面试题
查看>>
erlang: Programming Rules and Conventions。
查看>>
分布式应急响应
查看>>
iso定制封装
查看>>
精通MVC3摘译(8)-处理输出(2)
查看>>
字符串翻转之实现二
查看>>
Windows server 2008 Hyper-v下,玩转office communicator Server 2007 Enterprise
查看>>
Agent监控软件在IT工作中的应用
查看>>
Silverlight + WCF错误“The remote server returned an error: NotFound.”的解决方法
查看>>
内核调优记录file-max
查看>>
stream 实现异构数据表的传输
查看>>
机器视觉系统设计数字相机与模拟相机的优势比较
查看>>
RHEL 5基础篇—linux的简介
查看>>
Windows Server 2008 R2之五操作主控的管理
查看>>