主题六 函数(C语言核心)----33.初步认识函数

来源:互联网 发布:怎么样开淘宝充值店 编辑:程序博客网 时间:2024/06/06 08:48

初步认识函数

C语言中函数的由来

程序=数据+算法<===>C程序=数据+函数

函数的意义



面向过程的程序设计

面向过程是一种以过程为中心的编程思想,

将复杂的问题分解成为一个个容易解决的问题,分解过后的问题可以按照步骤一步步完成。

函数是面向过程在C语言中的体现,解决问题的每一个步骤可以用函数来实现。

 

 

函数声明与函数定义

程序中的声明可以理解为预先告诉编译器实体的存在,如:变量,函数,等等。

程序中的定义则明确指示编译器实体的意义

声明和定义并不相同!!!

例:声明与定义的不同

// global.c// int g_var = 0;#include <stdio.h>extern int g_var;void f(int i, int j);int main(){    //extern int g_var;若声明在mian里面,则只有main函数里面可见    int g(int x);        g_var = 10;        f(1, 2);        printf("%d\n", g(3));        return 0;}void f(int i, int j){    printf("i + j = %d\n", i + j);}int g(int x){    return 2 * x + g_var;}

函数参数

函数参数本质上与局部变量相同,都是在栈是分配空间(由栈的特点,后进先出,先计算右参后计算左参)

函数参数的初始值是函数调用时的实参值

#include <stdio.h>int f(int i, int j){    printf("%d, %d\n", i, j);}int main(){    int k = 1;        f(k, k++);        printf("%d\n", k);        return 0;}//2,1,2

后置++(先传值,延迟++),前置++(立即++)

 

函数参数的求值顺序依赖于编译器的实现!!

Int i=f()*g();     //f()和g()哪个先执行由编译器决定,最好不要写依赖于编译器的表达式

 

程序中的顺序点

程序中存在一定的顺序点,顺序点是指执行过程中修改变量值的最晚时刻

程序到达顺序点的时候,之前所做的一切操作必须反映到后续的访问中

 

C语言的顺序点

1.每个完整表达式结束时

2.&&,||,?:,以及逗号表达式的每一个运算对象计算之后

3.函数调用中对所有实际参数求值完成之后(进入函数体之前)

#include <stdio.h>int main(){    int k = 2;    int a = 1;        k = k++ + k++;        printf("k = %d\n", k);        if( a-- && a )       //a=0,不执行    {        printf("a = %d\n", a);    }        return 0;}//k=6,k=2+2+1+1

函数的缺省认定(默认值)

C语言会默认没有类型的函数参数为int

F(i,j)<===>int f(inti,int j)

 

小结

C语言是一种面向过程的语言

函数可以理解为解决问题的步骤

函数的实参并没有固定计算次序

顺序点是C语言中变量改变的最晚时机

函数定义时参数和返回值的缺省类型为int


原创粉丝点击