deine const 等关键字区别
define
属于预编译指令,在程序运行之前就已经编译好;额,定义变量,没有类型信息,
const
修饰的变量是不可变的,只是给出了内存地址,且只在程序运行时初始化开辟一块内存空间
const 只修饰右边部分 右边部分表示只读
int const *p; // *p:指针变量
//可以修改值,但不能修改地址
int a = ;
int b = ;
int const *p = &a;
NSLog(@"a = %d,b = %d,*p = %d a地址:%p", a, b, *p,a);
p = &b;
NSLog(@"a = %d,b = %d,*p = %d a地址:%p", a, b, *p,a); // const修饰变量
int * const p; // p:常量
//只能修改p的地址 不能修改p 的值
int const *p = &a;
NSLog(@"a = %d,b = %d,*p = %d a地址:%p", a, b, *p,a);
*p = b;
NSLog(@"a = %d,b = %d,*p = %d a地址:%p", a, b, *p,a);
extern
extern用来修饰全局变量。extern用在变量声明中常常有这样一个作用
使用如:
.h 文件中声明
extern NSString * const kTTTStrikeOutAttributeName;
.m 文件中
NSString * const kTTTStrikeOutAttributeName = @"TTTStrikeOutAttribute";
FOUNDATION_EXPORT:
FOUNDATION_EXPORT double TTTAttributedLabelVersionNumber;
类似define,区别在于这种方法在检测字符串的值是否相等的时候更快.对于第一种你可以直接使用(stringInstance == MyFirstConstant)来比较,而define则使用的是这种.([stringInstance isEqualToString:MyFirstConstant])
参考链接:http://www.jianshu.com/p/f547eb0368c4
deine const 等关键字区别的更多相关文章
- const int *p与int *const p的区别(转:csdn,suer0101)
本文只是一篇学习笔记,是看了<彻底搞定C指针>中的相关篇幅后的一点总结,仅此而已! 一.先搞清const int *p与int const *p的区别 它们的区别就是:没有区别!! 无论谁 ...
- #define和const的简单区别
面试常问:宏#define和const有什么区别? 1.编译器处理方式 define宏是在预处理阶段展开 const常量是在编译阶段使用 2.类型和安全检查不同 define宏没有类型,不做安全检查, ...
- let、var、const声明的区别
前言 看了方应杭老师的一篇解释let的文章,对JavaScript中的声明有了深刻的理解,这里也就有了总结一下JavaScript中各种声明之间区别的这篇文章. JavaScript中变量声明机制 首 ...
- js中const,var,let区别(转载)
js中const,var,let区别 来源:https://www.cnblogs.com/zzsdream/p/6372729.html 今天第一次遇到const定义的变量,查阅了相关资料整理了这篇 ...
- #define宏常量和const常量的区别
C++ 语言可以用const 来定义常量,也可以用#define 来定义常量.但是前者比后者有更多的优点:(1) const 常量有数据类型,而宏常量没有数据类型.编译器可以对前者进行类型安全检查.而 ...
- const 和 #define区别_fenglovel_新浪博客
const 和 #define区别 (2012-12-11 14:14:07) 转载▼ 标签: 杂谈 (1) 编译器处理方式不同 define宏是在预处理阶段展开. const常量是编译运行阶段使 ...
- void fun() const{}; const void fun(){}; 和void const fun(){}; 的区别?
void fun() const{}; const void fun(){}; 和void const fun(){}; 的区别? const void fun(){};和void const fun ...
- const,var,let区别(转载)
1.const定义的变量不可以修改,而且必须初始化. const b = 2;//正确 // const b;//错误,必须初始化 console.log('函数外const定义b:' + b);// ...
- C++(十九) — const 和 #define 区别
1.const (1)C++对 const 常量的处理过程:当编译器碰到 常量声明 时,在符号表中放入常量,编译时发现使用常量,则直接以符号表中的值替换. (2)如果,编译中发现,对 const 使 ...
随机推荐
- h5旋转效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- HDU4576 Robot(概率)
题意 抄袭自https://www.cnblogs.com/Paul-Guderian/p/7624039.html 多组输入n,m,l,r.表示在一个环上有n个格子.接下来输入m个w表示连续的一段 ...
- 在线matlab网站
网址: http://octave-online.net/ 使用:
- uvm_comps.svh
UVM的文件组织方式很有意思,比如,在src/comps/ 下的所有文件都通过uvm_comps.svh 包含进去. `include "comps/uvm_pair.svh" ` ...
- Nodejs + Jshint自动化静态代码检查
1. 目的 提交代码前能够自动化静态代码检查,提高代码质量 2. 准备 1. Nodejs安装: 官方地址:http://nodejs.org/ 安装说明:根据电脑配置下载对应的版本进行 ...
- 线段树成段更新模板POJ3468 zkw以及lazy思想
别人树状数组跑几百毫秒 我跑 2500多 #include<cstdio> #include<map> //#include<bits/stdc++.h> #inc ...
- pandas小结
pandas part I: # 总结: DataFrame.loc[0:5] 一共6行数据,而切片[0:5]只有5个数据 在对df的行数据删除后,有些index已缺失,此时用 iloc[]来按照位置 ...
- 打印两个有序链表的公共部分 【题目】 给定两个有序链表的头指针head1和head2,打印两个 链表的公共部分
简单题 package my_basic.class_3; public class Code_10_PrintCommonPart { public static class Node{ int v ...
- numpy中tile函数
tile函数位于python模块numpy.lib.shape_base中,他的功能是重复某个数组. 函数的形式是tile(A,reps) 函数参数说明中提到A和reps都是array_like的,什 ...
- 理解GloVe模型(Global vectors for word representation)
理解GloVe模型 概述 模型目标:进行词的向量化表示,使得向量之间尽可能多地蕴含语义和语法的信息.输入:语料库输出:词向量方法概述:首先基于语料库构建词的共现矩阵,然后基于共现矩阵和GloVe模型学 ...