重要之声明
来源:互联网 发布:淘宝刷单一天能挣多少 编辑:程序博客网 时间:2024/06/05 09:13
声明与定义的区别
声明:把某一个名称引入或者重新引用某个作用域中,一个变量可以被声明多次
定义:定义也属于声明的一种,但该声明必须给出被声明实体的细节,一个变量只能定义一次
例如:int a;它是定义性的声明它的实体的细节是指为变量a在内存中开辟了一个int大小的存储单位,而声明不为变量分配空间
变量的声明有两种情况:
一种是需要建立存储空间的:意思是在声明的同时需要开辟存储空间的。
另一种是不需要建立存储空间的:它的作用只是把一个名称引入或者重新引用到需要这个变量的地方
例如:extern int a a是在其他文件中定义的变量,在本文件中如果想用它,需要声明。
Char * const*(*fn)()这个也是声明。它声明了一个指针函数,该函数的返回值是一个指向char的常量指针的指针
tepedef char* STRING 这也是个声明,
(狭义上的称法)一般的情况下我们常常这样叙述,把建立空间的声明称之为"定义",
而把不需要建立存储空间称之为"声明"。把两者区分开。
对与声明它是由自己单独的语法的,要想看懂一个声明必须懂得其中的优先级规则 如看
到这个Char * const*(*fn)()声明你要知道它声明的意思
C语言声明优先级规则
A 从左向右找到第一个声明的名字(也就是标示符),然后按照优先级顺序读取:
B 优先级从高到低依次为:
B1,声明的名字被括起来的那部分
B2,后缀操作符部分:也就是运算符
()表示这是个函数而【】表示是个数组
B3前缀部分:* 表示是指向。。。。的指针
C如果const 和 volatile 后面是类型说明符(如:int ,long等)那么它作用与说明符
否者,const ,volume作用于 它左边紧邻的内容(一般是*)
从上也可以看出:一些运算符的优先级别
1,() 2。【】 3.。*
例如 int*fn() int*(fn())它是指fn是个函数,它的返回值是int*
而并不是指fn是一个指向函数的指针,返回值是int
int * a[ ] 它是 指a是一个元素为int*的数组
用优先级规则分析c声明:
char * const *(*fn)()
首先找到声明的名字fn,接下来
1.(*fn)2.(*fn) () 3. *.(*fn) () 4 char *.(*fn) () 5 char * const *(*fn)()
它表示fn是一个指向函数的指针,该指针指向的函数的返回值是一个指向char的常量指
针的指针
const char *(*c[10])(int **p)
它表示的是c是一个数组,他的元素是函数指针,该指针指向的函数的返回值是一个指向
常量char 的指针
注意const char * 和char *const 是不一样的
第一个表示的是指针的对象是可读的 第二个表示的是指针是可读的
- 重要之声明
- 重要的#pragma声明
- 重要的#pragma声明
- 重要的#pragma声明
- 重要的#pragma声明
- oracle之重要语句
- java之重要知识
- 关于学习Silverlight2.0的重要声明 ^_^
- 重要声明——本博客已迁往博客园
- php之 声明常量
- STL 之迭代器声明
- javascript变量之声明
- String之声明
- Asp.net 之TreeView重要
- gdb调试之重要命令
- Android开发之重要组件
- Opencv之Mat操作(重要)
- mark-onWindowFocusChanged重要之处
- 经典影片《罗生门》
- 我
- ubuntu下更改mysql默认编码(字符集)
- 真正爱你的人和只是玩你的人的不同
- 新手报道
- 重要之声明
- map的一种替代方案,不会自动排序(转)
- 不要滥用div,保持代码的整洁-----Coding Clean and Semantic Templates
- sys.objects (SQL Server 2005 )
- cserialport类
- Bugzilla+windows+安装手册
- C# DataTable 打印、保存控件
- 关于服务器定时器的封装
- sys.tables(sql server 2005)