申请建设网站的报告网站建设多少钱

张小明 2026/1/2 4:58:53
申请建设网站的报告,网站建设多少钱,百度新闻头条,seo教程从零开始复习函数的基本知识 来复习一下介绍过的有关函数的知识。要使用C函数#xff0c;必须完成如下工作#xff1a; 提供函数定义#xff1b;提供函数原型#xff1b;调用函数。 库函数是已经定义和编译好的函数#xff0c;同时可以使用标准库头文件提供其原型#xff0c;因…复习函数的基本知识来复习一下介绍过的有关函数的知识。要使用C函数必须完成如下工作提供函数定义提供函数原型调用函数。库函数是已经定义和编译好的函数同时可以使用标准库头文件提供其原型因此只需正确地调用这种函数即可。本书前面的示例已经多次这样做了。例如标准C 库中有一个strlen( )函数可用来确定字符串的长度。相关的标准头文件cstring 包含了strlen( )和其他一些与字符串相关的函数的原型。这些预备工作使程序员能够在程序中随意使用strlen( )函数。然而创建自己的函数时必须自行处理这3 个方面—定义、提供原型和调用。程序清单7.1 用一个简短的示例演示了这3 个步骤。#include iostream void simple(); int main() { using namespace std; cout main() will call the simple() function:\n; simple(); return 0; } void simple() { using namespace std; cout Im but a simple function.\n; }下面是该程序的输出main() will call the simple() function: Im but a simple function.执行函数simple()时将暂停执行main( )中的代码等函数simple()执行完毕后继续执行main()中的代码。在每个函数定义中都使用了一条using 编译指令因为每个函数都使用了cout。另一种方法是在函数定义之前放置一条using 编译指令或在函数中使用std::cout。下面详细介绍这3 个步骤。定义函数可以将函数分成两类没有返回值的函数和有返回值的函数。没有返回值的函数被称为void 函数其通用格式如下void functionName(parameterList) { statements(s); return; //optional }其中parameterList 指定了传递给函数的参数类型和数量本章后面将更详细地介绍该列表。可选的返回语句标记了函数的结尾否则函数将在右花括号处结束。void 函数相当于Pascal 中的过程、FORTRAN中的子程序和现代BASIC 中的子程序过程。通常可以用void 函数来执行某种操作。例如将Cheers!打印指定次数n的函数如下void cheers(int n) //no return value { for(int i0;in;i) std::coutCheers!; std::coutstd::endl; }参数列表int n 意味着调用函数cheers( )时应将一个int 值作为参数传递给它。有返回值的函数将生成一个值并将它返回给调用函数。换句话来说如果函数返回9.0 的平方根sqrt9.0则该函数调用的值为3.0。这种函数的类型被声明为返回值的类型其通用格式如下typeName functionName(parameterList) { statements; return value; //value is type cast to type typeName }对于有返回值的函数必须使用返回语句以便将值返回给调用函数。值本身可以是常量、变量也可以是表达式只是其结果的类型必须为typeName 类型或可以被转换为typeName例如如果声明的返回类型为double而函数返回一个int 表达式则该int 值将被强制转换为double 类型。然后函数将最终的值返回给调用函数。C对于返回值的类型有一定的限制不能是数组但可以是其他任何类型—整数、浮点数、指针甚至可以是结构和对象有趣的是虽然C函数不能直接返回数组但可以将数组作为结构或对象组成部分来返回。作为一名程序员并不需要知道函数是如何返回值的但是对这个问题有所了解将有助于澄清概念。另外还有助于与朋友和家人交换意见。通常函数通过将返回值复制到指定的CPU 寄存器或内存单元中来将其返回。随后调用程序将查看该内存单元。返回函数和调用函数必须就该内存单元中存储的数据的类型达成一致。函数原型将返回值类型告知调用程序而函数定义命令被调用函数应返回什么类型的数据参见图7.1。在原型中提供与定义中相同的信息似乎有些多余但这样做确实有道理。要让信差从办公室的办公桌上取走一些物品则向信差和办公室中的同事交代自己的意图将提高信差顺利完成这项工作的概率。函数在执行返回语句后结束。如果函数包含多条返回语句例如它们位于不同的if else 选项中则函数在执行遇到的第一条返回语句后结束。例如在下面的例子中else 并不是必需的但可帮助马虎的读者理解程序员的意图int bigger(int a,int b) { if(ab) return a; //if ab ,function terminates here else return b; //oterwise,function terminates here }如果函数包含多条返回语句通常认为它会令人迷惑有些编译器将针对这一点发出警告。然而这里的代码很简单很容易理解。有返回值的函数与Pascal、FORTRAN 和BASIC 中的函数相似它们向调用程序返回一个值然后调用程序可以将其赋给变量、显示或将其用于别的用途。下面是一个简单的例子函数返回double 值的立方double cube(double x) //x times x times x { return x*x*x; //a type double value }例如函数调用cube(1, 2)将返回1.728。请注意上述返回语句使用了一个表达式函数将计算该表达式的值这里为1.728并将其返回。函数原型和函数调用至此读者已熟悉了函数调用但对函数原型可能不太熟悉因为它经常隐藏在include 文件中。程序清单7.2 在一个程序中使用了函数cheer( )和cube( )。请留意其中的函数原型。#include iostream void cheers(int); //prototype :no return value double cube(double x); //prototype:returns a double int main() { using namespace std; cheers(5); //function call cout Give me a number:; double side; cin side; double volume cube(side); //function call cout A side -foot cube has a volume of volume cubic feet.\n; cheers(cube(2)); //prototype protection at work return 0; } void cheers(int n) { using namespace std; for (int i 0; i n; i) cout Cheers! ; cout endl; } double cube(double x) { return x * x * x; }运行结果Cheers! Cheers! Cheers! Cheers! Cheers! Give me a number:5 A 5 -foot cube has a volume of 125 cubic feet. Cheers! Cheers! Cheers! Cheers! Cheers! Cheers! Cheers! Cheers!main( )使用函数名和参数后面跟一个分号来调用void 类型的函数cheers5这是一个函数调用语句。但由于cube( )有返回值因此main( )可以将其用在赋值语句中double volumecube(side);但正如前面指出的读者应将重点放在原型上。那么应了解有关原型的哪些内容呢首先需要知道C要求提供原型的原因。其次由于C要求提供原型因此还应知道正确的语法。最后应当感谢原型所做的一切。下面依次介绍这几点将程序清单7.2 作为讨论的基础。为什么需要原型原型描述了函数到编译器的接口也就是说它将函数返回值的类型如果有的话以及参数的类型和数量告诉编译器。例如请看原型将如何影响程序清单7.2 中下述函数调用double volumecube(side);首先原型告诉编译器cube( )有一个double 参数。如果程序没有提供这样的参数原型将让编译器能够捕获这种错误。其次cube( )函数完成计算后将把返回值放置在指定的位置—可能是CPU 寄存器也可能是内存中。然后调用函数这里为main( )将从这个位置取得返回值。由于原型指出了cube( )的类型为double因此编译器知道应检索多少个字节以及如何解释它们。如果没有这些信息编译器将只能进行猜测而编译器是不会这样做的。读者可能还会问为何编译器需要原型难道它就不能在文件中进一步查找以了解函数是如何定义的吗这种方法的一个问题是效率不高。编译器在搜索文件的剩余部分时将必须停止对main( )的编译。一个更严重的问题是函数甚至可能并不在文件中。C允许将一个程序放在多个文件中单独编译这些文件然后再将它们组合起来。在这种情况下编译器在编译main( )时可能无权访问函数代码。如果函数位于库中情况也将如此。避免使用函数原型的唯一方法是在首次使用函数之前定义它但这并不总是可行的。另外C的编程风格是将main( )放在最前面因为它通常提供了程序的整体结构。原型的语法函数原型是一条语句因此必须以分号结束。获得原型最简单的方法是复制函数定义中的函数头并添加分号。对于cube( )程序清单7.2 中的程序正是这样做的double cube(double x); //add ;to header to get prototype然而函数原型不要求提供变量名有类型列表就足够了。对于cheer( )的原型该程序只提供了参数类型void cheers(int); //okay to drop variable names in prototype通常在原型的参数列表中可以包括变量名也可以不包括。原型中的变量名相当于占位符因此不必与函数定义中的变量名相同。原型的功能正如您看到的原型可以帮助编译器完成许多工作但它对程序员有什么帮助呢它们可以极大地降低程序出错的几率。具体来说原型确保以下几点编译器正确处理函数返回值编译器检查使用的参数数目是否正确编译器检查使用的参数类型是否正确。如果不正确则转换为正确的类型如果可能的话。前面已经讨论了如何正确处理返回值。下面来看一看参数数目不对时将发生的情况。例如假设进行了如下调用double zcube();如果没有函数原型编译器将允许它通过。当函数被调用时它将找到cube( )调用存放值的位置并使用这里的值。这正是ANSIC 从C借鉴原型之前C 语言的工作方式。由于对于ANSI C 来说原型是可选的因此有些C 语言程序正是这样工作的。但在C中原型不是可选的因此可以确保不会发生这类错误。接下来假设提供了一个参数但其类型不正确。在C 语言中这将造成奇怪的错误。例如如果函数需要一个int 值假设占16 位而程序员传递了一个double 值假设占64 位则函数将只检查64 位中的前16 位并试图将它们解释为一个int 值。但C自动将传递的值转换为原型中指定的类型条件是两者都是算术类型。例如程序清单7.2 将能够应付下述语句中两次出现的类型不匹配的情况cheers(cube(2));首先程序将int 的值2 传递给cube( )而后者期望的是double 类型。编译器注意到cube( )原型指定了一个double 类型参数因此将2 转换为2.0—一个double 值。接下来cube( )返回一个double 值8.0这个值被用作cheer( )的参数。编译器将再一次检查原型并发现cheer( )要求一个int 参数因此它将返回值转换为整数8。通常原型自动将被传递的参数强制转换为期望的类型。但第8 章将介绍的函数重载可能导致二义性因此不允许某些自动强制类型转换。自动类型转换并不能避免所有可能的错误。例如如果将8.33E27 传递给期望一个int 值的函数则这样大的值将不能被正确转换为int 值。当较大的类型被自动转换为较小的类型时有些编译器将发出警告指出这可能会丢失数据。仅当有意义时原型化才会导致类型转换。例如原型不会将整数转换为结构或指针。在编译阶段进行的原型化被称为静态类型检查static type checking。可以看出静态类型检查可捕获许多在运行阶段非常难以捕获的错误。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

法拍房北京网站小程序商城制作一个需要多少钱

ET框架完全攻略:UnityC#构建高并发游戏服务器的终极方案 【免费下载链接】ET Unity3D 客户端和 C# 服务器框架。 项目地址: https://gitcode.com/GitHub_Trending/et/ET 在当今游戏开发领域,ET框架凭借其创新的双端架构设计,正在重新定…

张小明 2025/12/30 15:51:41 网站建设

网站建设合同 费用北京社保网

时间限制400ms 内存限制512.00M 难度普及/提高− 历史分数100 提交记录 查看题解 题目反馈 标签 GESP 题目背景 为了保证只有时间复杂度正确的代码能够通过本题,时限下降为 400 毫秒。 题目描述 班主任给上课专心听讲、认真完成作业的同学们分别发放了…

张小明 2025/12/30 13:53:18 网站建设

瑞安营销网站建设安徽电子信息工程技术学院校园网

由于目前Langchain还无法实现直接调用Qwen3-Embedding模型 ,所以仿造huggingface.py中的HuggingFaceEmbeddings(BaseModel, Embeddings)​​​​​​函数​,自定义实现 LangChain 标准的 Embeddings 接口,将通义千问的 Qwen3-Embedding 模型&…

张小明 2025/12/31 13:48:44 网站建设

怎样做网站的外链张家港网站推广

新手避坑指南:NX二次开发UI调试实战全解析你有没有遇到过这样的场景?辛辛苦苦用 Block UI Styler 设计好对话框,生成代码、编译成 DLL,放进startup目录后启动 NX——结果点插件没反应;好不容易弹出窗口了,点…

张小明 2025/12/31 23:53:58 网站建设

彩票网站开发教程python如何建网站建设

提起“两化融合贯标”,你明白是什么意思吗?是企业开展两化融合管理体系建设,让两化融合管理体系在企业落地生根的过程,并申请第三方的两化融合评定机构来现场审核的过程,这个过程就叫两化融合贯标。两化融合是指工业化…

张小明 2025/12/31 13:26:48 网站建设

无忧网站建设多少钱校园二手交易网站建设方案

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

张小明 2025/12/31 18:02:29 网站建设