【C语言复习(二十八)】函数本质、顺序点

本文介绍了C语言中的函数意义,强调了函数作为模块化程序设计的体现。讨论了函数声明、定义和参数,指出函数参数求值顺序依赖于编译器实现。详细解释了程序中的顺序点概念,并通过实例分析了C语言中的顺序点,如表达式结束、运算符后的求值等。此外,还提及了函数参数的默认类型为int的特性及其潜在问题。
摘要由CSDN通过智能技术生成

1、函数的意义

        大概也就是模块化程序设计吧....

        在面向过程是一种以过程为中心的编程思想,首先将复杂的问题分解为一个个容易解决的问题,分解过后的问题可以按照步骤一步步完成,每一步都使用一个独立的函数来实现,函数是面向过程在C语言中的体现。

2、函数的声明和定义

        函数的声明和定义是不一样的,函数声明只是预先告诉编译器有这么一个东西存在,只是还没有具体定义;而函数定义是具体的函数功能的实现;

例如:

// global.c
//int g_var = 0;
 
 
#include <stdio.h>
 
extern int g_var;
//外部声明
 
void f(int i, int j);
//函数声明
int main()
{
    int g(int x);//局部函数声明
 
    g_var = 10;
 
    f(1, 2);
 
    printf("%d\n", g(3));
 
    return 0;
}
 
//函数定义
void f(int i, int j)
{
    g(1);
    //编译时会提示使用了隐性声明的函数,因为函数g是在main函数体中声明的
    printf("i + j = %d\n", i + j);
}
 
//函数定义
int g(int x)
{
    return 2 * x + g_var;
}

3、函数参数

        函数参数在本质上与局部变量相同,都是在栈上分配空间;

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

 

看一个示例1

#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;
}

输出的结果会是什么呢?

可能会觉得输出是1,1,2,或者其他答案,但是运行程序却输出了:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值