C语言声明优先级 const char* char * const
来源:互联网 发布:淘宝卖家怎么发微淘 编辑:程序博客网 时间:2024/05/01 05:22
1、先从简单的入手
const char * var和char const * var和char * const var
可以这么理解
const char var 表示var是个char类型的常量
char * var 表示var是一个指针,指向一个char
const char * var 表示var是一个指针,指向一个char,这个char是一个常量。
便于记忆:const 在*前面,表示指针指向的对象时常量
*在const前面,表示指针本身是常量。
2、C语言声明的优先级规则,理解了这个规则,再复杂的声明表达式都可以轻松K.O.
优先级规则表
B.1 生命中被括号括起来的部分
B.2 后缀操作符优先级较高,()表示函数,[]表示数组
情况下,作用于它相邻的指针星号
现在,我们来分析一个相对比较复杂的表达式 int * const * (*test)();
分析过程:
1 看到变量名test,并且注意到它直接被括号括住
2 括号内是一个整体,所以,test是一个指针,指向某某对象
3 然后考虑括号外,由于后缀操作符()的优先级较高,所以选择()进行分析
4 由于后缀操作符()表示函数,所以test为一个指针,它指向一个函数,这个函数的入口参数为空,返回值暂时未知,由前面的int * const *决定
5 分析int * const * 由又向左,根据最右边的*得出返回值是一个指针,指向(int * const)
6 分析int * const,由于*在const前面,所以指针本身是常量,所以得出返回值是一个常量指针,这个指针指向一个int*
所以得出上述表达式是:test是一个函数指针,这个函数的入口参数为空,返回值是一个常量指针,它指向一个int*,也就是int类型的指针
const char * var和char const * var和char * const var
可以这么理解
const char var 表示var是个char类型的常量
char * var 表示var是一个指针,指向一个char
const char * var 表示var是一个指针,指向一个char,这个char是一个常量。
便于记忆:const 在*前面,表示指针指向的对象时常量
*在const前面,表示指针本身是常量。
2、C语言声明的优先级规则,理解了这个规则,再复杂的声明表达式都可以轻松K.O.
优先级规则表
A 声明从它的名字开始读取,然后按照优先级依次读取
B 优先级从高到低的次序依次为B.1 生命中被括号括起来的部分
B.2 后缀操作符优先级较高,()表示函数,[]表示数组
C.3 前缀操作符:*表示指向...的指针
C 如果const和volatile关键字后面紧跟着类型操作符,如intlong,它作用于类型操作符,其他情况下,作用于它相邻的指针星号
现在,我们来分析一个相对比较复杂的表达式 int * const * (*test)();
分析过程:
1 看到变量名test,并且注意到它直接被括号括住
2 括号内是一个整体,所以,test是一个指针,指向某某对象
3 然后考虑括号外,由于后缀操作符()的优先级较高,所以选择()进行分析
4 由于后缀操作符()表示函数,所以test为一个指针,它指向一个函数,这个函数的入口参数为空,返回值暂时未知,由前面的int * const *决定
5 分析int * const * 由又向左,根据最右边的*得出返回值是一个指针,指向(int * const)
6 分析int * const,由于*在const前面,所以指针本身是常量,所以得出返回值是一个常量指针,这个指针指向一个int*
所以得出上述表达式是:test是一个函数指针,这个函数的入口参数为空,返回值是一个常量指针,它指向一个int*,也就是int类型的指针
1 0
- C语言声明优先级 const char* char * const
- const char & char const
- const char* char*const
- const char*,char *const,const char*const
- const char*,char *const,const char*const
- char ** a; const char ** b; char * const * c; const char * const * d; const char * const * const e;对
- const char*, char const* and char *const
- const char*, char const* and char *const
- const char* ; char const *; char* const;
- const char*, char const* and char *const
- 关于const char*, char const*, char*const
- const char*, char const*, char*const
- const char, const char*, char* const
- const char * char const * char * const
- const char*, char const*, char*const
- const char*, char const*, char*const
- const char*, char const*, char*const
- const char*, char const* and char *const
- 2014美团网校园招聘研发类笔试(哈尔滨站)
- hdu2091空心三角形
- 国庆节前夕的夜晚
- POJ 3160 强联通缩点+dp
- 动态创建用户对象对象的方法
- C语言声明优先级 const char* char * const
- 栈链的简单应用
- POJ 3680 Intervals
- poj 2991 Crane(线段树)
- 简单播放音乐的功能
- iOS面试
- 两个字符串的最大公共子串
- 设置打开Finder的快捷键
- IOS UITable 插入和删除的动画