各大网站的404重庆市建设工程信息网官方网站

当前位置: 首页 > news >正文

各大网站的404,重庆市建设工程信息网官方网站,wordpress顶部滑动,如何自己开一个平台一 C函数 函数是一组一起执行一个任务的语句。每个 C 程序都至少有一个函数#xff0c;即主函数 main() #xff0c;所有简单的程序都可以定义其他额外的函数。 您可以把代码划分到不同的函数中。如何划分代码到不同的函数中是由您来决定的#xff0c;但在逻辑上#xff…一 C函数 函数是一组一起执行一个任务的语句。每个 C 程序都至少有一个函数即主函数 main() 所有简单的程序都可以定义其他额外的函数。 您可以把代码划分到不同的函数中。如何划分代码到不同的函数中是由您来决定的但在逻辑上划分通常是根据每个函数执行一个特定的任务来进行的。 函数声明告诉编译器函数的名称、返回类型和参数。函数定义提供了函数的实际主体。 C 标准库提供了大量的程序可以调用的内置函数。例如函数 strcat() 用来连接两个字符串函数 memcpy() 用来复制内存到另一个位置。 函数还有很多叫法比如方法、子例程或程序等等。 1.1 定义函数 C 中的函数定义的一般形式如下 return_type function_name( parameter list ) {body of the function } 在 C 中函数由一个函数头和一个函数主体组成。下面列出一个函数的所有组成部分 返回类型一个函数可以返回一个值。return_type 是函数返回的值的数据类型。有些函数执行所需的操作而不返回值在这种情况下return_type 是关键字 void。函数名称这是函数的实际名称。函数名和参数列表一起构成了函数签名。参数参数就像是占位符。当函数被调用时您向参数传递一个值这个值被称为实际参数。参数列表包括函数参数的类型、顺序、数量。参数是可选的也就是说函数可能不包含参数。函数主体函数主体包含一组定义函数执行任务的语句。 实例以下是 max() 函数的源代码。该函数有两个参数 num1 和 num2会返回这两个数中较大的那个数 // 函数返回两个数中较大的那个数int max(int num1, int num2) {// 局部变量声明int result;if (num1 num2)result num1;elseresult num2;return result; } 1.3 函数声明 函数声明会告诉编译器函数名称及如何调用函数。函数的实际主体可以单独定义。 函数声明包括以下几个部分 return_type function_name( parameter list );针对上面定义的函数 max()以下是函数声明 int max(int num1, int num2);在函数声明中参数的名称并不重要只有参数的类型是必需的因此下面也是有效的声明 int max(int, int);当在一个源文件中定义函数且在另一个文件中调用函数时函数声明是必需的。在这种情况下应该在调用函数的文件顶部声明函数。 1.4 调用函数 创建 C 函数时会定义函数做什么然后通过调用函数来完成已定义的任务。 当程序调用函数时程序控制权会转移给被调用的函数。被调用的函数执行已定义的任务当函数的返回语句被执行时或到达函数的结束括号时会把程序控制权交还给主程序。 调用函数时传递所需参数如果函数返回一个值则可以存储返回值。例如 #include iostream using namespace std;// 函数声明 int max(int num1, int num2);int main () {// 局部变量声明int a 100;int b 200;int ret;// 调用函数来获取最大值ret max(a, b);cout Max value is : ret endl;return 0; }// 函数返回两个数中较大的那个数 int max(int num1, int num2) {// 局部变量声明int result;if (num1 num2)result num1;elseresult num2;return result; } 把 max() 函数和 main() 函数放一块编译源代码。当运行最后的可执行文件时会产生下列结果 Max value is : 2001.5 函数参数 如果函数要使用参数则必须声明接受参数值的变量。这些变量称为函数的形式参数。 形式参数就像函数内的其他局部变量在进入函数时被创建退出函数时被销毁。 当调用函数时有三种向函数传递参数的方式 调用类型描述传值调用该方法把参数的实际值赋值给函数的形式参数。在这种情况下修改函数内的形式参数对实际参数没有影响。指针调用该方法把参数的地址赋值给形式参数。在函数内该地址用于访问调用中要用到的实际参数。这意味着修改形式参数会影响实际参数。引用调用该方法把参数的引用赋值给形式参数。在函数内该引用用于访问调用中要用到的实际参数。这意味着修改形式参数会影响实际参数。 默认情况下C 使用传值调用来传递参数。一般来说这意味着函数内的代码不能改变用于调用函数的参数。之前提到的实例调用 max() 函数时使用了相同的方法。 1.5 参数的默认值 当您定义一个函数您可以为参数列表中后边的每一个参数指定默认值。当调用函数时如果实际参数的值留空则使用这个默认值。 这是通过在函数定义中使用赋值运算符来为参数赋值的。调用函数时如果未传递参数的值则会使用默认值如果指定了值则会忽略默认值使用传递的值。请看下面的实例 #include iostream using namespace std;int sum(int a, int b20) {int result;result a b;return (result); }int main () {// 局部变量声明int a 100;int b 200;int result;// 调用函数来添加值result sum(a, b);cout Total value is : result endl;// 再次调用函数result sum(a);cout Total value is : result endl;return 0; } 输出 Total value is :300 Total value is :1201.6 Lambda 函数与表达式 C11 提供了对匿名函数的支持,称为 Lambda 函数(也叫 Lambda 表达式)。 Lambda 表达式把函数看作对象。Lambda 表达式可以像对象一样使用比如可以将它们赋给变量和作为参数传递还可以像函数一样对其求值。 Lambda 表达式本质上与函数声明非常类似。Lambda 表达式具体形式如下: capture-return-type{body}实例 { return x y ; } 如果没有返回值可以表示为 capture{body}实例 []{ global_x; }
在一个更为复杂的例子中返回类型可以被明确的指定如下 - int { int z x y; return z x; }本例中一个临时的参数 z 被创建用来存储中间结果。如同一般的函数z 的值不会保留到下一次该不具名函数再次被调用时。 如果 lambda 函数没有传回值例如 void其返回类型可被完全忽略。 在Lambda表达式内可以访问当前作用域的变量这是Lambda表达式的闭包Closure行为。 与JavaScript闭包不同C变量传递有传值和传引用的区别。可以通过前面的[]来指定 [] // 沒有定义任何变量。使用未定义变量会引发错误。 [x, y] // x以传值方式传入默认y以引用方式传入。 [] // 任何被使用到的外部变量都隐式地以引用方式加以引用。 [] // 任何被使用到的外部变量都隐式地以传值方式加以引用。 [, x] // x显式地以传值方式加以引用。其余变量以引用方式加以引用。 [, z] // z显式地以引用方式加以引用。其余变量以传值方式加以引用。注意对于[]或[]的形式lambda 表达式可以直接使用 this 指针。但是对于[]的形式如果要使用 this 指针必须显式传入 this { this-someFunc(); }();二 C 数字 通常当我们需要用到数字时我们会使用原始的数据类型如 int、short、long、float 和 double 等等。这些用于数字的数据类型其可能的值和数值范围我们已经在 C 数据类型一章中讨论过。 2.1 C 定义数字 我们已经在之前章节的各种实例中定义过数字。下面是一个 C 中定义各种类型数字的综合实例 #include iostream using namespace std;int main () {// 数字定义short s;int i;long l;float f;double d;// 数字赋值s 10; i 1000; l 1000000; f 230.47; d 30949.374;// 数字输出cout short s : s endl;cout int i : i endl;cout long l : l endl;cout float f : f endl;cout double d : d endl;return 0; } 当上面的代码被编译和执行时它会产生下列结果 short s :10 int i :1000 long l :1000000 float f :230.47 double d :30949.42.2 C 数学运算 在 C 中除了可以创建各种函数还包含了各种有用的函数供您使用。这些函数写在标准 C 和 C 库中叫做内置函数。您可以在程序中引用这些函数。 C 内置了丰富的数学函数可对各种数字进行运算。下表列出了 C 中一些有用的内置的数学函数。 为了利用这些函数您需要引用数学头文件 cmath。 序号函数 描述1double cos(double); 该函数返回弧度角double 型的余弦。2double sin(double); 该函数返回弧度角double 型的正弦。3double tan(double); 该函数返回弧度角double 型的正切。4double log(double); 该函数返回参数的自然对数。5double pow(double, double); 假设第一个参数为 x第二个参数为 y则该函数返回 x 的 y 次方。6double hypot(double, double); 该函数返回两个参数的平方总和的平方根也就是说参数为一个直角三角形的两个直角边函数会返回斜边的长度。7double sqrt(double); 该函数返回参数的平方根。8int abs(int); 该函数返回整数的绝对值。9double fabs(double); 该函数返回任意一个浮点数的绝对值。10double floor(double); 该函数返回一个小于或等于传入参数的最大整数。 实例 #include iostream #include cmath using namespace std;int main () {// 数字定义short s 10;int i -1000;long l 100000;float f 230.47;double d 200.374;// 数学运算cout sin(d) : sin(d) endl;cout abs(i) : abs(i) endl;cout floor(d) : floor(d) endl;cout sqrt(f) : sqrt(f) endl;cout pow( d, 2) : pow(d, 2) endl;return 0; } 输出 sin(d) :-0.634939 abs(i) :1000 floor(d) :200 sqrt(f) :15.1812 pow( d, 2 ) :40149.72.3 C随机数 在许多情况下需要生成随机数。关于随机数生成器有两个相关的函数。一个是 rand()该函数只返回一个伪随机数。生成随机数之前必须先调用 srand() 函数。 下面是一个关于生成随机数的简单实例。实例中使用了 time() 函数来获取系统时间的秒数通过调用 rand() 函数来生成随机数 #include iostream #include ctime #include cstdlibusing namespace std;int main () {int i,j;// 设置种子srand( (unsigned)time( NULL ) );/* 生成 10 个随机数 */for( i 0; i 10; i ){// 生成实际的随机数j rand();cout 随机数 j endl;}return 0; } 输出 随机数 1748144778 随机数 630873888 随机数 2134540646 随机数 219404170 随机数 902129458 随机数 920445370 随机数 1319072661 随机数 257938873 随机数 1256201101 随机数 580322989三 数组 C 支持数组数据结构它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据但它往往被认为是一系列相同类型的变量。 数组的声明并不是声明一个个单独的变量比如 number0、number1、…、number99而是声明一个数组变量比如 numbers然后使用 numbers[0]、numbers[1]、…、numbers[99] 来代表一个个单独的变量。数组中的特定元素可以通过索引访问。 所有的数组都是由连续的内存位置组成。最低的地址对应第一个元素最高的地址对应最后一个元素。 3.1 声明数组 在 C 中要声明一个数组需要指定元素的类型和元素的数量如下所示 type arrayName [ arraySize ];这叫做一维数组。arraySize 必须是一个大于零的整数常量type 可以是任意有效的 C 数据类型。例如要声明一个类型为 double 的包含 10 个元素的数组 balance声明语句如下 double balance[10];现在 balance 是一个可用的数组可以容纳 10 个类型为 double 的数字。 3.2 初始化数组 在 C 中您可以逐个初始化数组也可以使用一个初始化语句如下所示 double balance[5] {1000.0, 2.0, 3.4, 7.0, 50.0};大括号 { } 之间的值的数目不能大于我们在数组声明时在方括号 [ ] 中指定的元素数目。 如果您省略掉了数组的大小数组的大小则为初始化时元素的个数。因此如果 double balance[] {1000.0, 2.0, 3.4, 7.0, 50.0};您将创建一个数组它与前一个实例中所创建的数组是完全相同的。下面是一个为数组中某个元素赋值的实例 balance[4] 50.0;上述的语句把数组中第五个元素的值赋为 50.0。所有的数组都是以 0 作为它们第一个元素的索引也被称为基索引数组的最后一个索引是数组的总大小减去 1。以下是上面所讨论的数组的的图形表示 3.3 访问数组元素 数组元素可以通过数组名称加索引进行访问。元素的索引是放在方括号内跟在数组名称的后边。例如 double salary balance[9];上面的语句将把数组中第 10 个元素的值赋给 salary 变量。下面的实例使用了上述的三个概念即声明数组、数组赋值、访问数组 #include iostream using namespace std;#include iomanip using std::setw;int main () {int n[ 10 ]; // n 是一个包含 10 个整数的数组// 初始化数组元素 for ( int i 0; i 10; i ){n[ i ] i 100; // 设置元素 i 为 i 100}cout Element setw( 13 ) Value endl;// 输出数组中每个元素的值 for ( int j 0; j 10; j ){cout setw( 7 ) j setw( 13 ) n[ j ] endl;}return 0; } 上面的程序使用了  setw() 来格式化输出。当上面的代码被编译和执行时它会产生下列结果: Element Value0 1001 1012 1023 1034 1045 1056 1067 1078 1089 1093.4 C中数组详解 在 C 中数组是非常重要的我们需要了解更多有关数组的细节。下面列出了 C 程序员必须清楚的一些与数组相关的重要概念 概念描述多维数组C 支持多维数组。多维数组最简单的形式是二维数组。指向数组的指针您可以通过指定不带索引的数组名称来生成一个指向数组中第一个元素的指针。传递数组给函数您可以通过指定不带索引的数组名称来给函数传递一个指向数组的指针。从函数返回数组C 允许从函数返回数组。 四 字符串 C 提供了以下两种类型的字符串表示形式 C 风格字符串C 引入的 string 类类型 4.1 C风格字符串 C 风格的字符串起源于 C 语言并在 C 中继续得到支持。字符串实际上是使用 null 字符 \0 终止的一维字符数组。因此一个以 null 结尾的字符串包含了组成字符串的字符。 下面的声明和初始化创建了一个 RUNOOB 字符串。由于在数组的末尾存储了空字符所以字符数组的大小比单词 RUNOOB 的字符数多一个。 char site[7] {p, h, O, n, e, \0};依据数组初始化规则可以把上面的语句写成以下语句 char site[] phone;C 中有大量的函数用来操作以 null 结尾的字符串: 序号函数 目的1strcpy(s1, s2); 复制字符串 s2 到字符串 s1。2strcat(s1, s2); 连接字符串 s2 到字符串 s1 的末尾。连接字符串也可以用  号例如: string str1 CSDN; string str2 google; string str str1 str2; 3strlen(s1); 返回字符串 s1 的长度。4strcmp(s1, s2); 如果 s1 和 s2 是相同的则返回 0如果 s1s2 则返回值小于 0如果 s1s2 则返回值大于 0。5strchr(s1, ch); 返回一个指针指向字符串 s1 中字符 ch 的第一次出现的位置。6strstr(s1, s2); 返回一个指针指向字符串 s1 中字符串 s2 的第一次出现的位置。 下面的实例使用了上述的一些函数 #include iostream #include cstringusing namespace std;int main () {char str1[13] csdn;char str2[13] google;char str3[13];int len ;// 复制 str1 到 str3strcpy( str3, str1);cout strcpy( str3, str1) : str3 endl;// 连接 str1 和 str2strcat( str1, str2);cout strcat( str1, str2): str1 endl;// 连接后str1 的总长度len strlen(str1);cout strlen(str1) : len endl;return 0; } 输出 strcpy( str3, str1) : csdn strcat( str1, str2): csdngoogle strlen(str1) : 124.2 C 中的String类 C 标准库提供了 string 类类型支持上述所有的操作另外还增加了其他更多的功能。我们将学习 C 标准库中的这个类现在让我们先来看看下面这个实例 现在您可能还无法透彻地理解这个实例因为到目前为止我们还没有讨论类和对象。所以现在您可以只是粗略地看下这个实例等理解了面向对象的概念之后再回头来理解这个实例。 #include iostream #include stringusing namespace std;int main () {string str1 csdn;string str2 google;string str3;int len ;// 复制 str1 到 str3str3 str1;cout str3 : str3 endl;// 连接 str1 和 str2str3 str1 str2;cout str1 str2 : str3 endl;// 连接后str3 的总长度len str3.size();cout str3.size() : len endl;return 0; } 输出 str3 : csdn str1 str2 : csdngoogle str3.size() : 12内容参考摘录于C 字符串 | 菜鸟教程