常量指针与指针常量

C语言:

int a = 10;
int b = 20;
int const *p1 = &a;
int *const p2 = &b;

//常量指针
//p1 = 8;//常量指针,指针指向的内存地址所对应的值不能改变。
p1 = &b;//常量指针,指针指向的内存地址可以改变。

//指针常量
//p2 = &b;//指针常量,指针指向的内存地址不能改变。
*p2 = 30;//指针常量,指针指向的内存地址所对应的值可以改变。

printf("a = %d\n", a);
printf("b = %d\n", b);
printf("*p1 = %d\n", *p1);
printf("*p2 = %d\n", *p2);

Objective-C :const NSString *和NSString *const p2

const NSString *p1 = @"hello";//NSString *p1原为指针变量 前置const定义p1为常量指针
NSLog(@"p1 = %@, %p", p1, p1);
p1 = @"test1";//p1指针指向的内存地址可以改变
NSLog(@"p1 = %@, %p", p1, p1);

NSString *const p2 = @"world";//后置const定义p1为指针常量
//        p2 = @"test2";//报错,p2指针指向的内存地址不可改变
NSLog(@"p2 = %@, %p", p2, p2);

Objective-C中引用全局变量时

.h文件中声明
extern NSString * const NOTIFICATION_NAME;
//extern const NSString *NOTIFICATION_NAME;(这样写是错误的)
.m文件中定义
NSString * const TJCNOTIFICATION_NAME = @"TjcNotification";

一般联合使用static和const来定义一个只能在本文件中使用的,不能修改的变量。

//这样定义相对于用#define来定义的话,优点就在于它指定了变量的类型,而#define是不能指定变量的类型的。
static NSString * const name = "tianheng";
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值