今天在阅读OpenSSL源代码,看到这一行,晕菜了!

code_killer 2009-07-09 01:13:42

在一个头文件中,定义了一个struct:

typedef struct stack_st
{
int num;
char **data;
int sorted;

int num_alloc;
int (*comp)(const char * const * a, const char * const * b);
} STACK;

红色这一行,两个参数a 和 b是什么类型? 是不是 char ** 加了两个 const?
哪位xd能给解释一下?
...全文
102 8 打赏 收藏 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
code_killer 2009-07-09
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 code_killer 的回复:]
参考以上几位xd的回复,我是不是可以这样理解?:

int func(const char * const * a, const char * const * b)
{
a  = xxxx;  //合法
*a  = xxxx;  //非法
**a = x;      //非法
}

[/Quote]


用 gcc-4.1.2(redhat) 试了一下, 我的理解是对的。
结贴,感谢各位,都有分。
Walf_ghoul 2009-07-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 luwenzuo 的回复:]
char * const * b  //const 修饰b, 就是说b的指针指向的数据不能修改

const char * const * a //cost 修饰a,就是说a的指针指向的数据不能修改
const char* ( . ..) //就是说二级指针存储的指针地址不能修改
[/Quote]
嗯。。。
大前置 2009-07-09
  • 打赏
  • 举报
回复


a = xxxx; //非法
code_killer 2009-07-09
  • 打赏
  • 举报
回复
参考以上几位xd的回复,我是不是可以这样理解?:

int func(const char * const * a, const char * const * b)
{
a = xxxx; //合法
*a = xxxx; //非法
**a = x; //非法
}
howean 2009-07-09
  • 打赏
  • 举报
回复
int (*comp)(const char * const * a, const char * const * b)==int (*comp)(char const * const * a, char const * const * b)
这个就好理解了吧,指向指针的指针a(红色的指针)修饰为cont ,被a指向的指针也被修饰为const。即两个const分别修饰红绿两个指针
大前置 2009-07-09
  • 打赏
  • 举报
回复

简单理解为:
const char * const * a //不能修改指针,也不能修改数据

char * const * b  //不修改数据

大前置 2009-07-09
  • 打赏
  • 举报
回复
char * const * b  //const 修饰b, 就是说b的指针指向的数据不能修改

const char * const * a //cost 修饰a,就是说a的指针指向的数据不能修改
const char* ( . ..) //就是说二级指针存储的指针地址不能修改
WizardOz 2009-07-09
  • 打赏
  • 举报
回复
一个指向无法改变的指向无法改变内容的字符串的指针的指针。
源码直接下载地址: https://pan.quark.cn/s/854bd57df23a 在金融行业中,房产购置贷款是众多人在购置不动产时必须进行的一项财务规划。Matlab作为一种功能强大的数学及数据分析平台,经常被应用于各类复杂的运算,其中包括住房贷款的计算。本文将详细研究运用Matlab开发住房贷款计算程序的相关知识要点,以协助读者掌握如何借助编程技术处理实际的信贷问题。 1. **信贷种类** - **商业信贷**:此类贷款通常由金融机构提供,其利率会随市场行情变化,借款人可选用固定利率或浮动利率方案。 - **公积金信贷**:该类贷款获得政府机构的支持,利率一般低于商业信贷,但设有最高贷款金额的限制。 2. **偿付模式** - **等额本金偿付**:每月支付相同数量的本金,利息部分逐月减少,因此整体还款总额会逐步降低。 - **等额本息偿付**:每月支付固定金额的本金与利息组合,利息部分随本金的逐月减少而递减。 3. **住房贷款计算公式** - **等额本息偿付**:每月还款额=贷款本金×[月利率×(1+月利率)^(贷款期数)]÷[(1+月利率)^(贷款期数)-1]。 - **等额本金偿付**:每月应还本金=贷款总额/贷款期数,每月利息=(贷款余额-累计已还本金)×月利率。 4. **Matlab编程基础** - **变量设定**:在Matlab环境中,首要任务是设定贷款数额、年化利率、贷款时长等核心参数。 - **循环控制结构**:借助for循环来模拟每个还款周期的过程,进行本金与利息的计算。 - **函数构建**:将住房贷款的计算逻辑封装为函数,便于重复使用和测试不同条件下的结果。 5. **Matlab代码编写** - **等额本息函数实现**...

70,040

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧