C++声明、定义、复杂声明及typedef专题(3)

时间:2026-01-20

本文对C++的复杂声明,作了深入地道的讲解,对使用typedef化简复杂声时和还原复杂声明也作了深入详细的讲解。

声明的形式之二:声明区分符声明符[, 声明符[, 声明符[, ....]];

比如:int a, b; 就表示声明了两个int型的变量a和b,其中int是类型区分符,a和b都是声明符

说明:

1、方括号”[]”中的内容表示可选项,以短竖线”|”隔开的内容可以只选一项,尖括号<>中的内容是必选项。

2、存储类区分符有:extern , static, auto, register, typedef。其中extern表示外部的,static表示静态的,auto表示自动,register表示寄存器,存储类区分符请参阅函数与作用域部分内容,本文不深入讨论。

3、注意:typedef是声明语法中存储类区分符的一种,因此typedef语句是一个简单的声明,可以按照声明的原理来解释typedef。

3、类型限定词有2个:const, volatile。其中const一般被理解为只读,而volatile则是易变。

4、类型区分符有:基本类型(如int, float, double, unsigned long int等);void类型;枚举、结构或联合类型;用户自定义类型;注意,声明时的类型区分符是不可省略的

6、声明区分符由:存储类区分符、类型限定词、类型区分符组成,其中在C++中类型区分符是不可省略的;比如extern const int *p; 其中extern const int 共同组成声明区分符,其中extern是存储类区分符,const是类型限定词,int是类型区分符,*p是声明符。再如int p; 这里的声明区分符只有一个即类型区分符int,后面的p是声明符。

5、声明符:

1)、声明符可以有多个,多个声明符之间使用逗号相隔开。这样就可以声明多个变量了。

2)、有5种不同的声明符,即标识符,函数声明符(),数组声明符[],指针声明符*,引用声明符&;这5种声明符

中可以相互进行一些嵌套,嵌套之后仍是一个声明符且是一个整体,而不是两个及以上单独的声明符,比如*和标识符结合是一个声明符,表明该标识符是指针,再如*a[2]也是一个声明符,表明标识符是一个数组,这个数组中存储的是一个指针变量,*a[2]并不是单独的三个声明符(即指针声明符,标识符,数组声明符),根据声明符的不同,我们可以声明不同的对象。

4)、注意:声明符中也可以出现类型限定词,声明符中的类型限定词一般出现在指针声明符之后或函数声明符的小

括号内(即用于限定形参)。比如int *const p; 这里的类型限定词应属于声明符的内容,而不是类型区分符,即这个声明的声明符是*const p; 声明区分符是int。

5)、若声明符就是一个标识符,则标识符会被声明为一个变量。

6)、函数声明符():若标识符后跟一对圆括号的情形,圆括号内可能有形参表,则这时标识符将被声明为一个函数,

比如int f(float);就表示标识符f是一个反回类型为int带有一个float形参的函数。

7)、数组声明符[]:若标识符后跟一对方括号,方括号内是任选的常量表达式,则这时标识符将被声明为一个数组,

比如int a[11]; 表示标识符a是一个int型数组。

8)、指针声明符*:若在标识符的前面有一个星号”*”,在星号和标识符之间可能会有类型限定词,则这时标识符将被声明为一个指针,比如int *p; 表示标识符p是一个int型指针;再如int *const p; float *p; 等。

9)、引用声明符&:若在标识符的前面有一个符号”&”,则这个标识符将被声明为一个引用,比如int &b;表示标识符b被声明一个类型为int的引用。

7、理解声明符和声明区分符的作用:在声明多个变量时,声明符就能显现出其作用了,声明符说明了所声明的标识符是一个普通变量、函数、指针、数组还是引用,在声明多个标识符时,每个标识符是以逗号分隔的,但每个声明的形式都应是“声明区分符+声明符”的形式,因此在使用逗号声明多个标识符时,应把声明区分符和声明符分别找出来,然后才能判断出声明的标识符究竟是普通变量还是指针、数组、函数、引用。比如const int *const f1(), *const p1, p2, *f2(); 这个声明看起来很复杂,其实将声明区分符和声明符区别开来之后就会很简单,这里声明了4个标识符f1, p1, p2, f2 其中const int是声明区分符,*const f1是一个声明符,*const p1是一个声明符,p2是一个声明符,*f2()又是一个声明符,因此这里声明了一个函数f1,该函数反回一个指针,这个指针是常量,指针指向的是const int类型的变量;同理指针p1是个常量,指向的是const int类型的变量,同理p2是const int类型的变量,而不是const int * const类型。同理f2是一个函数,这个函数反回的是一个指针,这个指针指向const int类型的变量,其实p1, p2和f2分别相当于const int *const p1; const int p2;和const int *f(); 因此理解声明符和声明区分符是相当重要的。

七、声明的规则和限制

1、注意:声明语句后面有一个分号,分号表示此声明语句到此结束。C++中的语句详见后文

2、在一个声明中最多只能有一个存储类区分符,即extern , static, auto, register,typedef只能有其中一个。

3、一个标识符必须指定一个类型,且只能指定一种类型,也就是说不能让一个变量即是int型又是float型。注意:C语言中可以不为标识符指定类型,比如const x;将是一个声明(缺省为int型),但C++必须为标识符指定类型,C++没有缺省的类型。 …… 此处隐藏:801字,全部文档内容请下载后查看。喜欢就下载吧 ……

C++声明、定义、复杂声明及typedef专题(3).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:4.9 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:19元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219