iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++中怎么声明语法方法
  • 298
分享到

C++中怎么声明语法方法

2023-06-17 16:06:29 298人浏览 安东尼
摘要

本篇文章给大家分享的是有关c++中怎么声明语法方法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一个声明为每个声明子都声明一个实体(entity),同时为那个实体给出一个名字,

本篇文章给大家分享的是有关c++中怎么声明语法方法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

一个声明为每个声明子都声明一个实体(entity),同时为那个实体给出一个名字,并且隐含的给出存储类,类型,和由说明符给出的其它特性。说明符和声明子一起决定了名字是否是一个对象,数组,指针,引用或函数。例如,

声明x为一个整型指针,f为一个函数返回一个整型。正是声明子*x和f()使类型x和f产生区别。

int *x, f();  declarator: [ * [ const ] | & ]... direct-declarator  direct-declarator: declarator-id | ( declarator ) |  direct-declarator ( parameter-declaration-list ) |   direct-declarator [ constant-expression ]  A declarator-id is an identifier, possibly qualified:  declarator-id: [ nested-name-specifier ] identifier  nested-name-specifier: { class-or-namespace-name ::}...

如果声明子是一个仅包含一个declarator-id的直接-声明子,那么这说明这个标识符具有decl-specifiers隐含的属性,而没有进一步的修饰。例如,在下面的C++声明语法中

int n;

声明子是n,这是一个只包含direct-declarator的declarator-id,因此根据含义,n的类型为整型。

如果声明子为其它形式,那么你可以按照下面的方法确定标识符的类型:首先,假设T为decl-specifiers隐含的类型,忽略friend或static等非类型属性,同时假设D为声明子。然后重复下面的步骤直到推导出D为一个declarator-id,此时T正是你所寻找的类型:

  • C++名字空间基本内容讲述

  • C++断点无效解决方案

  • C++基本函数代码示例

  • C++操作符重载不同方式区别

  • C++文件流应用方法详细介绍

如果D形如(D1),那么用D1替换D。

如果D形如* D1 或 * const D1,那么根据是否有const,用“指针,它指向T”或者“常量指针,它指向T”替换T,然后用D1替换D。

如果D形如D1(参数-声明-列表),那么用参数由参数-声明-列表定义的、“返回T的函数”替换T,然后用D1替换D。

如果D形如D1[常量-表达式],那么用元素个数由常量-表达式给出的“T数组”替换T,然后然后用D1替换D。

***,如果声明子形如&D,那么用“T引用”替换T,然后用D1替换D。

作为一个示例,考虑下面的C++声明语法

int *f();

首先,T和D分别为int和*f(),因此D形如*D1,其中D1为f()。

你可能认为D可以形如D1() 或者 *D1。然而,如果D形如D1(),那么D1将不得不为*f,D1将是一个direct-declarator(因为本节开始处的语法注1规定只有direct-declarator前面是())。但是如果我们看看direct-declarator的定义注2,很明显它不能包含*。因此,D只能是*f(),它形如*D1,其中D为f()。

既然我们已经确定D1为f(),那么我们知道必须用“指针,它指向T”替换T,即“指针,指向整型”,同时用f()替换D。

至此我们还没有解析D为declarator-id,因此我们必须重复该过程。此时,D1只能是f,因此我们用“返回T的函数”替换T,它是一个“返回整型指针不带参数的函数”,然后用f替换D。

此时,D为declarator-id,因此推导结束。我们已经确定声明

int *f();

声明f的类型为“不带参数返回整型指针的函数”。另一个例子,声明

int* p, q;

具有两个声明子,*p和q。对于每个声明子,T都是int。对于***个声明子,D是*p,因此T变成“指针,它指向整型,”而D为p。声明p类型为“指针,它指向整型”。

我们单独分析第二个声明子,T还是int,D是q。很明显声明q为整型。

***,让我们分析§10.1.2/173中那个奇怪的例子:

double (*get_analysis_ptr())(const vector<Student_info>&);

分析C++声明语法过程可以分为下面五个步骤

T: double D: (*get_analysis_ptr())(const vector<Student_info>&)

T: 返回double带有 const vector<Student_info>& 参数的函数 D: (*get_analysis_ptr())

T: function returning double... (如前所示) D: *get_analysis_ptr()

T: 指针,它指向一个返回double...的函数 D: get_analysis_ptr()

T: 一个函数,返回一个函数指针,它指向一个返回double...的函数 D: get_analysis_ptr

get_analysis_ptr是一个函数,它返回一个函数指针,它指向一个返回double,带有const vector<Student_info>&参数的函数。我们将如何展开const vector<Student_info>&作为一个练习。幸运的是,C++声明语法如此令人迷惑;它们中的大多数看起来

declarator: declarator-id ( parameter-declaration-list )

以上就是C++中怎么声明语法方法,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网其他教程频道。

--结束END--

本文标题: C++中怎么声明语法方法

本文链接: https://www.lsjlt.com/news/290838.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++中怎么声明语法方法
    本篇文章给大家分享的是有关C++中怎么声明语法方法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一个声明为每个声明子都声明一个实体(entity),同时为那个实体给出一个名字,...
    99+
    2023-06-17
  • C#中声明数组的语法是什么
    这篇文章主要介绍“C#中声明数组的语法是什么”,在日常操作中,相信很多人在C#中声明数组的语法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#中声明数组的语法是什么”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-17
  • c语言函数声明的方法有哪些
    在C语言中,函数声明的方法有以下几种:1. 在函数使用之前,将函数的原型放在函数调用之前。例如:```cint add(int a,...
    99+
    2023-08-08
    c语言
  • CSS语法、选择器、声明的方法
    这篇文章主要讲解了“CSS语法、选择器、声明的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“CSS语法、选择器、声明的方法”吧! 一、HTML...
    99+
    2022-10-19
  • VB.NET中怎么声明结构方法
    今天就跟大家聊聊有关VB.NET中怎么声明结构方法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。“结构”是 Visual Basic 早期版本支持的用户定义类型 (UDT) 的一般化...
    99+
    2023-06-17
  • C语言声明数组并赋值的方法是什么
    在C语言中,可以使用以下两种方法声明数组并赋值: 逐个元素赋值:在声明数组时,可以使用大括号 {} 来初始化数组的元素,每个元素...
    99+
    2023-10-27
    c语言
  • c++声明类的方法有哪些
    在C++中,声明类的方法有以下几种方式:1. 在类的声明中定义方法:在类的声明中,可以直接定义类的成员函数。这种方式适用于方法的实现...
    99+
    2023-08-16
    c++
  • 在c语言中怎么声明数组
    在C语言中,可以通过以下方式声明数组:1. 在函数内部声明数组:```数据类型 数组名[数组大小];```例如:```int arr...
    99+
    2023-08-09
    c语言
  • c++中string声明与赋值的方法是什么
    在C++中,可以使用以下三种方法声明和赋值string变量:1. 使用赋值运算符(=)来声明和赋值一个字符串变量。```cppstd...
    99+
    2023-09-15
    c++
  • c语言怎么声明标识符
    C语言中,标识符是用于表示变量、常量、函数和其他用户自定义的名字。以下是声明标识符的一些规则:1. 标识符可以由字母、数字和下划线组...
    99+
    2023-08-28
    c语言
  • c语言怎么声明一个函数
    在C语言中,可以使用以下格式来声明一个函数:返回类型 函数名称(参数列表);其中,- 返回类型指定函数的返回值类型,可以是基本数据类...
    99+
    2023-09-27
    c语言
  • C#中怎么声明数组
    今天就跟大家聊聊有关C#中怎么声明数组,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。C#声明数组时,方括号([])必须跟在类型后面,而不是标识符后面。在C#中,将方括号放在标识符后是...
    99+
    2023-06-17
  • es6新增的声明方法怎么用
    本文小编为大家详细介绍“es6新增的声明方法怎么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“es6新增的声明方法怎么用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。新增声明方法:1、let,用于声明变量,语...
    99+
    2023-06-29
  • JavaScript中声明常量的方法
    小编给大家分享一下JavaScript中声明常量的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在js中,可以使用const关键字声明常量,语法格式为“con...
    99+
    2023-06-15
  • java中collection声明的方法是什么
    在Java中,Collection是一个接口,声明了一些常用的方法,包括: 添加和删除元素的方法: boolean add(E...
    99+
    2023-10-26
    java collection
  • C# 枚举类型的声明和使用方法
    本篇内容主要讲解“C# 枚举类型的声明和使用方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C# 枚举类型的声明和使用方法”吧!目录前言相关介绍一、枚举声明二、声明位置三、枚举使用前言学习记录...
    99+
    2023-06-20
  • C语言示例讲解结构体的声明与初始化方法
    目录一、结构体声明的结构1.直接声明2.使用typedef声明一个新的类型3.不完全声明二.结构体初始化1.声明(同时定义)时直接赋值2.定义时直接赋值3.定义后赋值4.指定初始化一...
    99+
    2022-11-13
  • javascript中声明变量的方法是什么
    这篇文章主要介绍“javascript中声明变量的方法是什么”,在日常操作中,相信很多人在javascript中声明变量的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2022-10-19
  • java声明json的方法是什么
    在Java中声明JSON的方法有以下两种:1. 使用第三方库(如Gson、Jackson等):需要先引入对应的库文件,然后使用相应的...
    99+
    2023-05-13
    java声明json java json
  • C#中怎么实现类型声明
    本篇文章给大家分享的是有关C#中怎么实现类型声明,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。C#类型声明定义新的引用类型。一个类可以从另一个类继承,并且可以实现多个接口。类成...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作