博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
typedef
阅读量:4204 次
发布时间:2019-05-26

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

typedef char * pchar;
const pchar p = "Hello!";
p的类型是什么?如果你以为是 const char * 类型,那你就错了!
p的真正类型是 char * const,也就是说,const pchar p 与 char * const p 是等价的。
typedef不是像宏那样纯粹文字代换,它有解释语义的功能。让我们来看一个简单例子:
const int i = 5 表明 i 是一个常量,同理可得,const pchar p = "Hello!" 中的p也是一个常量,也就是说编译器把pchar作为一个数据类型,而不管它内部是否包含指针。
const pchar p和const int i本质上没有区别,都是对变量进行只读限制,只不过此处变量p的数据类型是我们自己定义的而不是系统固有类型而已。因此,const pchar p的含义是:限定数据类型为char *的变量p为只读。
这样可以获得语义的一致性,例如当用户进行如下声明时会得到相同的结果:
const pchar p 等价于 pchar const p
const int i 等价于 int const i
而宏则不然:
#define pchar char *;
const pchar p 不等价于 pchar const p
记住:不管什么时候,只要为指针声明 typedef,那么都要在最终的 typedef 名称中加一个 const,以使得该指针本身是常量,而不是对象。
typedef const char * cpstr;
const使用的基本形式:const char m; 限定m不可变。
const char *pm; 限定*pm不可变,pm是可变的。

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

你可能感兴趣的文章
自动化测试框架之控制界面的关键
查看>>
自动化测试框架指南
查看>>
利用 STAF 实现程序更新包的自动部署测试
查看>>
软件安全性测试转载自小龙虾博客
查看>>
周末参加“北京干部管理职业技术学院”关于高职课程改革的专家讨论会
查看>>
软件测试框架介绍
查看>>
软件自动化测试框架的发展
查看>>
实现haproxy+LNMT负载均衡架构
查看>>
论文浅尝 | 通过共享表示和结构化预测进行事件和事件时序关系的联合抽取
查看>>
论文浅尝 | 融合多粒度信息和外部语言知识的中文关系抽取
查看>>
论文浅尝 | GMNN: Graph Markov Neural Networks
查看>>
廖雪峰Python教程 学习笔记3 hello.py
查看>>
从内核看epoll的实现(基于5.9.9)
查看>>
python与正则表达式
查看>>
安装.Net Framework 4.7.2时出现“不受信任提供程序信任的根证书中终止”的解决方法
查看>>
input type=“button“与input type=“submit“的区别
查看>>
解决Github代码下载慢问题!
查看>>
1.idea中Maven创建项目及2.对idea中生命周期的理解3.pom文件夹下groupId、artifactId含义
查看>>
LeetCode-栈|双指针-42. 接雨水
查看>>
stdin,stdout,stderr详解
查看>>