﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-Muponder-文章分类-【C/C++】</title><link>http://www.cppblog.com/deajosha/category/18702.html</link><description>为者常成，行者常至。</description><language>zh-cn</language><lastBuildDate>Sat, 19 Oct 2013 14:10:19 GMT</lastBuildDate><pubDate>Sat, 19 Oct 2013 14:10:19 GMT</pubDate><ttl>60</ttl><item><title>C 标示符的作用域 链接属性 存储类型</title><link>http://www.cppblog.com/deajosha/articles/166401.html</link><dc:creator>盛源博</dc:creator><author>盛源博</author><pubDate>Fri, 24 Feb 2012 13:49:00 GMT</pubDate><guid>http://www.cppblog.com/deajosha/articles/166401.html</guid><wfw:comment>http://www.cppblog.com/deajosha/comments/166401.html</wfw:comment><comments>http://www.cppblog.com/deajosha/articles/166401.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/deajosha/comments/commentRss/166401.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/deajosha/services/trackbacks/166401.html</trackback:ping><description><![CDATA[标识符：是我们在程序中提供给变量、类型、函数的名称。<br />
作用域：当变量在程序中的某一个部分被声明时，它只有在程序的一定区域才能被访问，这个区域由标识符的作用域决定，而标识符的作用域就是程序中该标识符可以被访问的区域。例如：函数的局部变量的作用域就只能在该函数的函数体内，其他函数希望在这些变量的作用域之外通过标识符访问他们，将会访问失败；其次，可以在不同的作用域内声明一个相同的变量标识符。<br />
编译器可以确认4种不同类型的作用域：文件作用域、函数作用域、代码块作用域和原型作用域。<br />
文件作用域：任何在所有代码块之外的标识符都具有文件作用域(file scope)，这些标识符从他们声明处到源文件结束处都可以访问。<br />
函数作用域：函数作用域适用于语句标签，语句标签用于GOTO语句,基本上，现在编程都不使用GOTO语句了，这个可以不去理解。<br />
原型作用域：原型作用域只适用 于在函数原型中声明的参数名，它主要的功能是防止与程序其他部分的名字冲突，但唯一可能出现的冲突就是在同一个原型中不止一 次的使用同一名字。
<br />代码块作用域：位于一对花括号是的所有语句称为一个代码块，任何在代码块的开始位置声明的标识符都具有代码块作用域（block scope），表示它们可以被这个代码块的所有语句访问。<br />
链接属性：主要是用于处理多次声明标识名称后，如何判断这个标识符是否是指的同一个。标识符的作用域与它的链接属性有关，但这两个 是不同的概念。链接属性包括3种：external(外部)、internal(内部)和none（无）。链接属性只针对相同的标识符，对于不同的标识符不具有链接属性。默认标识符的链接属性为extern, static只对缺少链接属性extern的声明都有改变链接属性的效果。
<br />存储类型：指存储变量值的内存类型，存储类型决定变量何时创建、何时销毁以及它的值将保持多久。<br />存储变量有主要有三个地方：普通内存、运行时堆栈、硬件寄存器。
变量的缺少存储类型取决于它的声明位置，凡是在任何代码块之外声明的变量总是存储于静态内存中。
代码块内部声明的变量的缺省存储类型是自动的（automatic）,也就是存储于堆栈中。但是如果在代码块内部的变量前加上关键字static，则它的存储类型将变成静态的。
关键字register可以用于自动变量的生命，提示它们应该存储于机器的硬件寄存器而不是内存中，称为寄存器变量。<img src ="http://www.cppblog.com/deajosha/aggbug/166401.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/deajosha/" target="_blank">盛源博</a> 2012-02-24 21:49 <a href="http://www.cppblog.com/deajosha/articles/166401.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>