主题六 函数(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
- 主题六 函数(C语言核心)----33.初步认识函数
- 主题六 函数(C语言核心)----35.函数VS宏
- 主题六 函数(C语言核心)----36.函数调用行为
- 主题六 函数(C语言核心)----37.函数递归详解
- 主题六 函数(C语言核心)----38.函数设计技巧
- 主题六 函数(C语言核心)----34.可变参数列表
- 专题六-函数(C语言的核心)
- 初步认识C语言
- C语言函数的核心
- C语言函数集(六)
- 初步认识函数
- C语言宏的初步认识及宏与函数的区别
- C语言回顾 六 函数
- 【C语言疯狂讲义】(六)C语言函数
- 关于getch();函数的初步认识。
- C语言学习之认识exit()函数
- C语言函数一个一个去认识-1
- Android JNI编程(三)——C语言指针的初步认识、指针变量、互换两个数、函数返回多个值
- 一、stormkafka之DynamicBrokersReader
- 创建线程的另一种方法-使用Android线程池
- 给php代码添加规范的注释phpDocumentor
- RYU实战,REST API流表控制(2)
- a标签鼠标悬停效果
- 主题六 函数(C语言核心)----33.初步认识函数
- android native service
- 设计模式--单例模式
- 题目二 吝啬的国度
- SRE Google 运维解密--管理
- C++学习笔记之作用域为类的常量和作用域内的枚举
- SpringBoot开始微服务架构
- Android 测试类的使用
- dubbo 视频