函数(c++)
- 格式:ppt
- 大小:209.50 KB
- 文档页数:38


C语言函数的定义及使用C语言是一种通用的编程语言,具有广泛的应用领域。
函数是C语言中的一个重要概念,它可以将一些功能代码封装起来,提供代码的重用性和模块化。
本文将详细介绍C语言函数的定义及使用。
1.函数的定义函数定义是指在程序中定义函数的过程,它由函数头和函数体两个部分组成。
函数头包括函数的返回类型、函数名和参数列表,具体格式为:返回类型函数名(参数列表)返回类型指定函数返回的数据类型,可以是基本数据类型(如int、float等)或自定义的结构体类型。
函数名是用来标识函数的名称,函数名可以自由选择,但最好能表达出函数的功能。
参数列表是函数的输入,可以包括多个参数,多个参数之间使用逗号分隔。
函数体是函数的实际执行代码块,用大括号{}括起来。
函数体中可以包含任意有效的C语言语句,用于完成具体的功能。
2.函数的使用函数的使用分为函数的调用和函数的返回值两个方面。
函数的调用是指在程序中使用函数的过程,调用函数可以使用函数名加上参数列表的方式,通过函数名找到对应的函数代码,执行函数体中的代码。
函数调用的一般格式为:函数名(参数列表)函数的调用可以出现在其他函数中、主函数main中,甚至可以出现在同一个函数中(递归调用)。
当一个函数被调用时,程序会跳转到被调用函数的函数体中执行代码,执行完毕后再返回到调用函数的位置继续执行代码。
函数的返回值是指函数执行完毕后返回给调用者的值。
在函数定义时,可以使用关键字return加上返回值来指定函数的返回值。
返回值可以是任意数据类型,如果函数没有返回值,可以使用void来表示。
函数的返回值可以用于赋值给其他变量、作为其他函数的参数等。
3.函数的传参方式C语言中的函数参数传递方式有传值和传引用。
传值是指将参数的值复制一份传递给函数,在函数中对参数的修改不会影响原来的变量。
传值的优点是简单、安全,但当传递大量数据时效率较低。
传引用是指将参数的地址传递给函数,函数通过地址可以直接访问和修改原来的变量。
PostgreSql扩展Sql-动态加载共享库(C函数)基于 psql (PostgreSQL) 10.4pg_language表定义了函数实现所使⽤的语⾔。
主要⽀持了C语⾔和SQL语句。
⼀些可选的语⾔包括pl/pgsql、tcl和perl。
ligang=# select lanname, lanispl, lanpltrusted, lanplcallfoid, laninline, lanvalidator from pg_language;lanname | lanispl | lanpltrusted | lanplcallfoid | laninline | lanvalidator----------+---------+--------------+---------------+-----------+--------------internal | f | f | 0 | 0 | 2246c | f | f | 0 | 0 | 2247sql | f | t | 0 | 0 | 2248plpgsql | t | t | 13198 | 13199 | 13200pg_proc表对函数进⾏了定义。
每⼀个函数在该表中都对应⼀个元组,包含函数名。
输⼊参数类型,返回类型以及对函数的定义(可能是⽂本,可能是⼀段编译型语句,也可能是对可执⾏代码的引⽤)。
编译过的函数可以静态地链接到服务器上,或者在存储在共享库内,当第⼀次使⽤该库时动态的载⼊。
ligang=# select proname,prolang, prorettype,proargtypes, prosrc,probin from pg_proc where proname like '%square%';proname | prolang | prorettype | proargtypes | prosrc | probin---------+---------+------------+-------------+----------------------------+--------------------square | 13201 | 23 | 23 | begin return $1 * $1; end; |squares | 13 | 23 | 23 | squares_return_int | $libdir/squares.so查看其数据类型ligang=# select oid , typname from pg_type where oid = 23;oid | typname-----+---------23 | int4(1 row)以下是⽰例函数:C: 与内建SQL类型等效的C类型intsquare_int (int x){return x * x;}把上⾯的函数编译成共享库⽂件,这样声明:CREATE FUNCTION square(int) RETURNS intAS '/path/to/square.so', 'square_int'LANGUAGE 'C';PL/PGSQL:ligang=# create function square(int) returns int as 'begin return $1 * $1; end;' LANGUAGE 'plpgsql';CREATE FUNCTIONligang=#ligang=#ligang=# select square(4);square--------16建⽴⽤户函数动态库新建代码#include "postgres.h"#include "fmgr.h"intsquare_int(int x){return x * x;}编译 - 添加共享库[ligang@yfslcentos71 include]$ gcc -I`pg_config --includedir-server` -c squares.c[ligang@yfslcentos71 include]$ gcc -shared squares.o -o squares.so[ligang@yfslcentos71 include]$ cp squares.so `pg_config --libdir`/Pg数据库装载ligang=# create function squares(int) returns int as '$libdir/squares.so', 'square_int' LANGUAGE 'c' STRICT;关于PG_MODULE_MAGIC为了确保不会错误加载共享库⽂件,从PostgreSQL 开始将检查那个⽂件的"magic block",这允许服务器以检查明显的不兼容性。
简述c语言函数的语法规则C语言函数的语法规则C语言是一种面向过程的编程语言,函数是C语言中的基本组成单元之一。
函数在程序中用于封装一段可重复使用的代码,提高代码的复用性和可读性。
下面将以简述C语言函数的语法规则为标题,详细介绍C语言函数的语法规则。
1. 函数的定义函数的定义由返回类型、函数名、参数列表和函数体组成。
函数的定义通常放在程序的开头或者单独的函数定义区域。
2. 返回类型返回类型指的是函数执行完后返回的数据类型。
C语言的返回类型可以是基本数据类型、结构体、指针等。
如果函数不返回任何值,可以使用关键字void表示。
3. 函数名函数名是函数的唯一标识符,用于在程序中调用函数。
函数名可以由字母、数字和下划线组成,且不能以数字开头。
4. 参数列表参数列表是函数定义中的一部分,包含了函数调用时传递给函数的参数。
参数列表可以为空,也可以包含一个或多个参数。
每个参数由参数类型和参数名组成,多个参数之间使用逗号分隔。
5. 函数体函数体是函数定义中的一部分,包含了函数要执行的语句块。
函数体中的语句可以是任何合法的C语言语句,用大括号{}括起来。
6. 函数的声明函数的声明用于在程序中提前声明函数的存在,使得在函数被调用之前,编译器能够知道函数的返回类型和参数列表。
函数的声明由返回类型、函数名和参数列表组成,以分号结尾。
7. 函数的调用函数的调用是指在程序中使用函数名来执行函数体中的代码。
函数的调用通常在主函数main中进行。
8. 参数传递C语言中的函数参数传递方式有两种:值传递和地址传递。
值传递是指将实际参数的值复制给形式参数,函数操作的是形式参数的副本;地址传递是指将实际参数的地址传递给形式参数,函数通过指针操作实际参数。
9. 函数返回值函数可以通过return语句返回一个值给调用者。
return语句可以出现在函数的任何位置,一旦执行到return语句,函数将立即返回并结束执行。
10. 函数的重载C语言不支持函数的重载,即同一个函数名不能有多个不同参数列表的定义。