当前位置: 网站首页>网站建设>网站建设

【网站优化】高端!网站定制/设计/优化/二次开发/制作/搭建-和田高端网站建设【简单基础中小型网站】

发表日期: 2022-09-01 14:36:27 浏览次数:125

上往建站提供网站建设网站推广网店设计网站建设企业网站网站制作网页设计网站建设企业网站制作网页制作   高端定制网站建设H5页面设计开发微网站微信运营移动端设计开发手机端网站小程序,致力于苏州企业网站建设与公司网站制作,全国用户超10万,10余年的网站开发和建站经验,主营:网站建设网络推广微信公众号代运营、商城小程序开发定制网店设计等业务,专业团队服务,效果好。。

服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)

高端!网站定制/设计/优化/二次开发/制作/搭建-和田高端网站建设

网站建设.png

函数声明

函数声明会告诉编译器函数名称及如何调用函数。函数的实际主体可以单独定义。

函数声明包括以下几个部分:

return_type function_name( parameter list );

针对上面定义的函数 max(),以下是函数声明:

int max(int num1, int num2);

在函数声明中,参数的名称并不重要,只有参数的类型是必需的,因此下面也是有效的声明:

int max(int, int);

当您在一个源文件中定义函数且在另一个文件中调用函数时,函数声明是必需的。在这种情况下,您应该在调用函数的文件顶部声明函数。

调用函数

创建 C 函数时,会定义函数做什么,然后通过调用函数来完成已定义的任务。

当程序调用函数时,程序控制权会转移给被调用的函数。被调用的函数执行已定义的任务,当函数的返回语句被执行时,或到达函数的结束括号时,会把程序控制权交还给主程序。

调用函数时,传递所需参数,如果函数返回一个值,则可以存储返回值。例如:

实例

#include <stdio.h> /* 函数声明 */int max(int num1, int num2); int main (){   /* 局部变量定义 */   int a = 100;   int b = 200;   int ret;   /* 调用函数来获取最大值 */   ret = max(a, b);   printf( "Max value is : %dn", ret );   return 0;} /* 函数返回两个数中较大的那个数 */int max(int num1, int num2) {   /* 局部变量声明 */   int result;   if (num1 > num2)      result = num1;   else      result = num2;   return result; }

把 max() 函数和 main() 函数放一块,编译源代码。当运行最后的可执行文件时,会产生下列结果:

Max value is : 200

函数参数

如果函数要使用参数,则必须声明接受参数值的变量。这些变量称为函数的形式参数

形式参数就像函数内的其他局部变量,在进入函数时被创建,退出函数时被销毁。

当调用函数时,有两种向函数传递参数的方式:

调用类型描述
传值调用该方法把参数的实际值复制给函数的形式参数。在这种情况下,修改函数内的形式参数不会影响实际参数。
引用调用通过指针传递方式,形参为指向实参地址的指针,当对形参的指向操作时,就相当于对实参本身进行的操作。

默认情况下,C 使用传值调用来传递参数。一般来说,这意味着函数内的代码不能改变用于调用函数的实际参数。


根据函数能否被其他源文件调用,将函数区分为内部函数和外部函数。


内部函数

如果一个函数只能被本文件中其他函数所调用,它称为内部函数。在定义内部函数时,在函数名和函数类型的前面加 static,即


static 类型名 函数名 (形参表)

例如,函数的首行:


static int max(int a,int b)

内部函数又称静态函数。使用内部函数,可以使函数的作用域只局限于所在文件。即使在不同的文件中有同名的内部函数,也互不干扰。提高了程序的可靠性。


外部函数

如果在定义函数时,在函数的首部的最左端加关键字 extern,则此函数是外部函数,可供其它文件调用。


如函数首部可以为


extern int max (int a,int b)

C 语言规定,如果在定义函数时省略 extern,则默认为外部函数。


在需要调用此函数的其他文件中,需要对此函数作声明(不要忘记,即使在本文件中调用一个函数,也要用函数原型来声明)。在对此函数作声明时,要加关键字 extern,表示该函数是在其他文件中定义的外部函数。


实例

以下实例通过多个文件的函数实现输入一串字符串,然后删除指定的字符:


file1.c(文件1)


#include <stdio.h>


static void delete_string(char str[],char ch);

int main()

{

    extern void enter(char str[]); // 对函数的声明

    extern void print(char str[]); // 对函数的声明

    char c,str[100];

    enter(str);

    scanf("%c",&c);

    delete_string(str,c);

    print(str);

    return 0;

}


static void delete_string(char str[],char ch)//内部函数

{

    int i,j;

    for(i=j=0;str[i]!='';i++)

    if(str[i]!=ch)

    str[j++]=str[i];

    str[j]='';

}

file2.c(文件2)


#include <stdio.h>


void enter(char str[100]) // 定义外部函数 enter

{

    fgets(str, 100, stdin); // 向字符数组输入字符串

}

file3.c(文件3)


#include <stdio.h>


void print(char str[]) // 定义外部函数 print

{

    printf("%s ",str);

}

输入字符串"abcdef",给字符数组 str,在输入要删去的字符'd'。 运行结果:


$ gcc file1.c file2.c file3.c 

$ ./a.out

abcdef                   # 输入的字符串

d                        # 要删除的字符

abcef                    # 删除后的字符串

Sad

   Sad


  347***568@qq.com


6年前 (2017-03-20)

   月影困


  cad***20601@163.com


70

内联函数


内联函数是指用inline关键字修饰的函数。在类内定义的函数被默认成内联函数。内联函数从源代码层看,有函数的结构,而在编译后,却不具备函数的性质。


内联扩展是用来消除函数调用时的时间开销。它通常用于频繁执行的函数,对于小内存空间的函数非常受益。


使用内联函数的时候要注意:


递归函数不能定义为内联函数

内联函数一般适合于不存在while和switch等复杂的结构且只有1~5条语句的小函数上,否则编译系统将该函数视为普通函数。

内联函数只能先定义后使用,否则编译系统也会把它认为是普通函数。

对内联函数不能进行异常的接口声明。

示例:一个简单的交换函数


inline void swap(int *a, int *b)


高端!网站定制/设计/优化/二次开发/制作/搭建-和田高端网站建设


上往建站提供微信小程序+公众号商城+企业网站建设一站式微信网站商城营销系统,微信小程序是一种依附于微信体内即点即用,无需下载安装即可使用的轻应用,它开启了移动端“触手可及”的梦想,致力于苏州企业网站建设与公司网站制作,全国用户超10万,10余年的网站开发和建站经验,主营:网站建设微信公众号代运营商城小程序开发定制网店设计等业务,专业团队服务,效果好。

服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)


400-111-6878
服务热线
顶部

备案号: 苏ICP备2021016738号-6

CopyRight © 2021 上往建站 All Right Reserved 未经许可不得复制转载

24小时服务热线:400-111-6878   E-MAIL:1120768800@qq.com   QQ:1120768800

  网址: https://www.768800.club  网站建设上往建站

关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|

企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|

400电话办理| 书生商友软件|

预约专家

欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系

  

全国服务热线:400-111-6878