Daily-C-Study(10):C语言关键字有哪些

Daily-C-Study(10):C语言关键字有哪些

成于坚持,败于止步

C 语言标准定义的32 个关键字:

auto 声明自动变量,缺省时编译器一般默认为auto

int 声明整型变量

double 声明双精度变量

long 声明长整型变量

char 声明字符型变量

float 声明浮点型变量

short 声明短整型变量

signed 声明有符号类型变量

unsigned 声明无符号类型变量

struct 声明结构体变量

union 声明联合数据类型

enum 声明枚举类型

static 声明静态变量

switch 用于开关语句

case 开关语句分支
default 开关语句中的“其他”分支

break 跳出当前循环

register 声明寄存器变量
const 声明只读变量

volatile 说明变量在程序执行中可被隐含地改变

typedef 用以给数据类型取别名(当然还有其他作用)

extern 声明变量是在其他文件正声明(也可以看做是引用变量)

return 子程序返回语句(可以带参数,也可不带参数)

void 声明函数无返回值或无参数,声明空类型指针

continue 结束当前循环,开始下一轮循环
do 循环语句的循环体

while 循环语句的循环条件

if 条件语句
else 条件语句否定分支(与if 连用)

for 一种循环语句(可意会不可言传)

goto 无条件跳转语句

sizeof 计算对象所占内存空间大小

下面的篇幅就一一讲解这些关键字。但在讲解之前先明确两个概念:

什么是定义?什么是声明?它们有何区别?举个例子:
A)int i;

B)extern int i;(关于extern,后面解释)

哪个是定义?哪个是声明?或者都是定义或者都是声明?我所教过的学生几乎没有一人能回答上这个问题。这个十分重要的概念在大学里从来没有被提起过!

什么是定义:所谓的定义就是(编译器)创建一个对象,为这个对象分配一块内存并给它取上一个名字,这个名字就是我们经常所说的变量名或对象名。但注意,这个名字一旦和这块内存匹配起来(可以想象是这个名字嫁给了这块空间,没有要彩礼啊O(∩_∩)O~),它们就同生共死,终生不离不弃。并且这块内存的位置也不能被改变。一个变量或对象在一定的区域内(比如函数内,全局等)只能被定义一次,如果定义多次,编译器会提示你重复定义同一个变量或对象。

什么是声明:有两重含义。如下:

第一重含义:告诉编译器,这个名字已经匹配到一块内存上了(伊人已嫁,吾将何去何从?何以解忧,唯有稀粥),下面的代码用到变量或对象是在别的地方定义的。声明可以出现多次。

第二重含义:告诉编译器,我这个名字我先预定了,别的地方再也不能用它来作为变量名或对象名。比如你在图书馆自习室的某个座位上放了一本书,表明这个座位已经有人预订,别人再也不允许使用这个座位。其实这个时候你本人并没有坐在这个座位上。

这种声明最典型的例子就是函数参数的声明,例如:

void fun(int i, char c);
好,这样一解释,我们可以很清楚的判断:A)是定义;B)是声明。那他们的区别也很清晰了。记住,定义声明最重要的区别:定义创建了对象并为这个对象分配了内存,声明没有分配内存(一个抱伊人,一个喝稀粥O(∩_∩)O~)。

在c++中去解释声明和定义应该更好理解,放到c++环境中用类的方式来理解

"声明"的严谨C++语意,是用以告诉编译器类型及其细节,例如:

class MyClass
{
//数据成员细节…
//成员函数细节…
};
上述声明仅告诉编译器有自定义类型MyClass,编译器仅对其进行语汇分析及名字的决议,并未占用内存!

"定义"的严谨C++语意,即内存占有,编译器将在相对内存地址上为其对象定址!

要注意的是,我们不能简单的说

string myString;

是声明还是定义,判断的原则是看是否占用内存。例如:

class MyClass //类的声明,无内存占有
{
string myString; //string的声明
};

#include
//全局作用域
string myString;//定义,myString是实例化的string!
int main()
{
//Main函数体内
string myAnotherString;//定义,myAnotherString是实例化的string!
return 0;
}
对于32个关键字,虽然简单,还有很有必要一一滤过,细节决定成败
就先到这里,O(∩_∩)O~

我的专栏地址:http://blog.csdn.net/column/details/c-daily-study.html

待续。。。。。。

作者:Ela–学海无涯
来源:CSDN
原文:https://blog.csdn.net/xinyuwuxian/article/details/9016207
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/wang2425559/article/details/89514150