首页 > 编程知识 正文

c语言基本数据类型,c语言怎样定义函数

时间:2023-05-05 17:19:04 阅读:9801 作者:693

函数是用于独立运行某个功能的可复用代码,可以接收也可以不接收用户传递的数据。 接收用户数据的函数可以分为有参函数无参函数,因为在定义时指定参数,而不接收用户数据的函数则无需指定

将代码段封装为函数的过程为函数定义

C语言无参函数的定义

如果函数不接收用户传递的数据,则可以定义不带参数的数据。 如下所示。

数据类型函数名称

//body

}

dataType是返回类型,可以是c语言的任何数据类型,如int、float或char。 functionName是函数名称,是一种标识符,命名约定和标识符相同。 函数名称后必须有括号()。 body是函数体,是函数执行的代码,是函数的主体部分。 即使只有一个句子,函数体也必须用{ }括起来。 如果有返回值,则在函数主体中使用return语句返回。 从return中出来的数据类型必须与dataType相同。 例如,定义计算1到100之间结果的函数。

int sum ()、{ int i、sum=0; for(I=1; i=100; I ) { sum=i; } return sum; }累计结果保存在变量sum中,最后用return语句返回。 sum为int型,返回值也为int型,一一对应。

return是c语言的关键字,仅用于函数,用于返回处理结果。

完全补充上面的代码:

#includestdio.hintsum((intI,sum=0; for(I=1; i=100; I ) { sum=i; } return sum; (}int main ) ) { int a=sum ); printf(thesumis%d(n ),a ); 返回0; }执行结果:

The sum is 5050

函数不能嵌套定义。 因为main也是函数定义,所以将sum放在main之外。 因为函数必须先定义和使用,所以sum放在main之前。

注: main是函数定义,不是函数调用。 可执行文件加载到内存中后,将从main函数中执行。 这意味着调用定义的main函数。 没有返回值的函数

如果存在不需要返回值的函数或不确定返回值类型的函数,则可以用void表示:

voidhello((printf )、hello、world(n ); 如果没有//返回值,则不需要return语句} void是c语言的关键字,表示“空类型”或“无类型”,这意味着大多数情况下没有return语句。

c语言有参数函数的定义

如果函数需要接收用户传递的数据,请使用参数进行定义。 如下所示。

数据类型功能名称(数据类型1 param 1、数据类型2 param 2…) }

//body

}

dataType1 param1、dataType2 param2 …是参数列表。 函数可以只有一个参数,也可以是多个。 多个参数之间用、和分隔。 参数本质上也是变量,通过指定类型和名称来定义。 与无参数函数的定义相比,有参数函数的定义只是增加了参数列表。

数据通过参数传递到函数内部进行处理,处理完成后通过返回值通知函数外部。

修改上面的示例,计算从m添加到n的结果。

intsum(intm,int n ) int n,sum=0; for(I=m; i=n; I ) { sum=i; } return sum; }参数列表中显示的参数可以像常规变量一样在函数主体中使用。

sum ) )调用函数时,必须传递两个数据。 一个给m,另一个给n。 可以直接传递整数。 例如:

int result=sum (1,100 ); //1传到m,100传到n

也可以传递变量:

int begin=4;

int end=86;

intresult=sum(Begin,end ); //begin传递给m,end传递给n

也可以将整数和变量一起传递。

int num=33;

intresult=sum(num,80 ); //num传递给m,80传递给n

定义函数时给出的参数称为形式参数,简称形参数; 函数调用时给出的参数,即传递的数据称为实际参数,简称实参。 调用函数时,将实参的值传递给形参相当于赋值操作。

原则上,实参的类型和数量必须与形参一致。 允许自动类型转换或强制执行时

类型转换,那么实参类型也可以不同于形参类型,例如将 int 类型的实参传递给 float 类型的形参就会发生自动类型转换。

将上面的代码补充完整:

#include <stdio.h>int sum(int m, int n){ int i, sum=0; for(i=m; i<=n; i++){ sum+=i; } return sum;}int main(){ int begin = 5, end = 86; int result = sum(begin, end); printf("The sum from %d to %d is %dn", begin, end, result); return 0;}

运行结果:
The sum from 5 to 86 is 3731

定义 sum() 时,参数 m、n 的值都是未知的;调用 sum() 时,将 begin、end 的值分别传递给 m、n,这和给变量赋值的过程是一样的,它等价于:

m = begin;
n = end;

函数不能嵌套定义
强调一点,C语言不允许函数嵌套定义;也就是说,不能在一个函数中定义另外一个函数,必须在所有函数之外定义另外一个函数。main() 也是一个函数定义,也不能在 main() 函数内部定义新函数。

下面的例子是错误的:

#include <stdio.h>void func1(){ printf("http://c.biancheng.net"); void func2(){ printf("C语言zxdlq变怪兽"); }}int main(){ func1(); return 0;}

有些初学者认为,在 func1() 内部定义 func2(),那么调用 func1() 时也就调用了 func2(),这是错误的。

正确的写法应该是这样的:

#include <stdio.h>void func2(){ printf("C语言zxdlq变怪兽");}void func1(){ printf("http://c.biancheng.net"); func2();}int main(){ func1(); return 0;}

func1()、func2()、main() 三个函数是平行的,谁也不能位于谁的内部,要想达到「调用 func1() 时也调用 func2()」的目的,必须将 func2() 定义在 func1() 外面,并在 func1() 内部调用 func2()。

有些编程语言是允许函数嵌套定义的,例如 JavaScript,在 JavaScript 中经常会使用函数的嵌套定义。

注:此文章转载自:C语言中文网:http://c.biancheng.net/view/1851.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。