您的位置:首页 > 编程语言 > C语言/C++

C语言总结之基本声明

2013-12-02 22:49 225 查看

1.引言

变量声明的基本形式:

说明符(一个或多个) 声明表达式列表;

说明符(specifier)包含一些关键字,用于描述被声明的标识符的基本类型。说明符也可以改变标识符[1]的默认存储类型(关键字为auto、代码块内的static、register)和作用域(关键字为extern、代码块外的static)。

注:[1]标识符:标识符(identifier)就是变量、函数和类型等的名字。

2.初始化

在一个声明中,可以给一个标量变量指定一个初始值,例如:

int i = 15;

3.声明简单数组

声明一个一维数组时。要在数组名后面跟一对方括号,方括号里面是一个整数,指定数组中元素的个数。例如:

int array[10];

其中array是数组名。array是int的数组,元素有10个。

3.声明指针

在C语言中的声明中,先给出一个基本类型,再跟一个标识符列表,这些标识符组成表达式,用于产生基本类型的变量。例如:

int *p;

这条语句表示表达式*p产生的见过类型是int。*操作符是解引用的意思,执行的是间接访问(indirection)操作,所以p是一个指向int的指针。

3.1 注意

int* p;



int *p;

是同一个意思,除了代码风格外没有任何差别。
但是,我们更习惯与使用第二种,因为:

int* a,b,c;

 这里声明的不是a、b、c三个指针,声明的是一个指向int的指针a,两个int类型的变量b和变量c。要想正确声明三个指针,应该这样:

int *a,*b,*c;

备注:星号操作符的结合性是自右向左的。

3.2 初始化

在声明指针变量的时候,也可以为它指定初始值。

int a;
int *p = &a;


上面的语句相当于

int a;
int *p;
p = &a;


使用「int *p = &a; 」的时候,千万不要以为是对*p赋值,实际上还是对指针变量p赋值。

4.隐式声明

C语言中有几种声明,它的类型名可以省略。例如:
一、函数如果不显式地声明返回值的类型,它就默认返回整型(int);
二、当你使用旧风格声明函数的形式参数时,如果省略了参数的类型,编译器就会默认它们为整型。
三、如果编译器可以推断出一条语句是一个声明语句时,并且这条语句缺少类型名,那么编译器就会假定它为整型。

但是我们不能依赖隐式声明,这会给后面阅读代码的人造成困扰。

5.扩展

除了上面的普通变量、数组和指针的基本声明,还有聚合类型和函数等其他声明,这以后在相关章节中再进行总结。

参考资料:
Reek K A, 徐波. C 和指针[M]. 人民邮电出版社, 2008.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: