需要注意的地方 - const 和typedef的结合使用

本文通过实例解析了C语言中typedef与const的使用方法,并解释了它们与指针结合时的区别。强调了typedef不是宏,而是用于创建新的类型别名。

“typedef”,大家都很熟悉,它是用来为内建类型或用户自定义类型引入助记符号的。但是有很多人(甚至是有经验的程序员)仍然将typedef理解为“宏”,或者至少按照“宏”的语法和语义去推断typedef的相关规则。    
      下面就是这个例子可以给这些人敲一个警钟(还是“悬崖勒马”吧):    
      typedef   int   *pitype;    
      extern   const   pitype   pi;//****    
      此处,pi是什么类型的?是“const   int   *”么?    
      非也,pi的类型是“int   *const”!    
      也就是说,const和pitype都直接作用到变量pi上!(如果按照“宏”的方式去理解,则const作用在pitype上,而非直接作用于pi上面)    
   
      此例虽然简单,但是如果不小心,也可能让大侠们跌份,所以还是注意一点儿的好:)  

 

  我们知道,如果有int   *p,   a;   那么p是int*类型的,而a是int类型的。原因是*似乎与标识符结合得更紧密。但是,如果有typedef   int*   PINT;那么PINT   p,   a;中的p,a就都是int*类型的了。  
   
  所以,对于int   const   *p;我同意楼主“const修饰词和其他类型修饰是并列的”的说法,但不认同“p的种属有两个,int   和   const*”。我认为,首先*是与p结合的,所以它是一个指针,然后从右往左,它指向的内容是const的,它指向的内容是int的。对于const   int   *p也是一样,指向是int的,指向是const的。所以这两种定义产生的效果是一样的。至于int   *const   p;同样以*为右结合来看,p是一个指针,它的属性是const的,再看*的左边,p这个指针是指向int的。  
   
  但是,对于typedef,却把*的结合型置左了,产生了一种新的“合一的”类型int*。所以对于const   PINT   p;   现在PINT中包含的*已经不再与p结合了,而是一种新的类型,这种类型就可以想象为int。那么const   int   p;中的const修饰的是p的内容为const,那么当然const   PINT   p中的const就是修饰int*类型的p的值为const。  
   
  所以,我认为关键在于一般的指针写法中的*是右结合,要以*分割为左右两部分来看,右边的是这个指针的属性,左边的是指向内容的属性。

 

但是,对于typedef,却把*的结合型置左了,产生了一种新的“合一的”类型int*。所以对于const   PINT   p;   现在PINT中包含的*已经不再与p结合了,而是一种新的类型,这种类型就可以想象为int。那么const   int   p;中的const修饰的是p的内容为const,那么当然const   PINT   p中的const就是修饰int*类型的p的值为const。  

【电动车优化调度】基于模型预测控制(MPC)的凸优化算法的电动车优化调度(Matlab代码实现)内容概要:本文介绍了基于模型预测控制(MPC)的凸优化算法在电动车优化调度中的应用,并提供了Matlab代码实现。该方法结合了MPC的滚动优化特性与凸优化的高效求解能力,用于解决电动车充电调度问题,提升电网运行效率与可再生能源消纳能力。文中还提及多个相关研究方向技术支撑,包括智能优化算法、机器学习、电力系统管理等,展示了其在多领域交叉应用的潜力。配套资源可通过提供的网盘链接获取,涵盖YALMIP工具包及其他完整仿真资源。; 适合人群:具备一定电力系统、优化理论及Matlab编程基础的科研人员研究生,尤其适合从事电动汽车调度、智能电网优化等相关课题的研究者。; 使用场景及目标:①实现电动车集群在分时电价或电网需求响应机制下的有序充电调度;②结合可再生能源出力与负荷预测,利用MPC进行多时段滚动优化,降低电网峰谷差,提高能源利用效率;③为学术论文复现、课题研究及工程仿真提供可靠的技术路线与代码支持。; 阅读建议:建议读者结合文档中提到的智能优化算法与电力系统背景知识进行系统学习,优先掌握MPC基本原理与凸优化建模方法,并下载配套资源调试代码,以加深对电动车调度模型构建与求解过程的理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值