第8章-函数和变量的存储类型

函数的概述

  • 划分模块,分解问题,自顶向下,逐步求精
  • 库函数和自定义函数

函数的定义、调用和声明

  • 函数的定义

    • 一般形式

      函数类型 函数名(形式参数列表)	-----函数头
      {
          声明部分                  -----函数体
          执行部分
      }
      
    • return语句

      函数的返回值

      函数的结束标志

  • 函数调用

    • 一般调用形式
    • 调用过程
    • 调用方式
  • 函数的声明

    • 函数原型
    • 函数声明的形式
    • 函数声明的条件
    • 函数声明的位置

函数中的参数

  • 实际参数与形式参数
  • 参数的传递方式
    • 值传递
    • 地址传递

函数的嵌套调用和递归调用

形参实参都为指针

#include<stdio.h>
void invert(int *x, int n) {
	int *i, *j, t;
	for (i = x, j = x+n-1; i < j; i++,j--) {
		t = *i;
		*i = *j;
		*j = t;
	}
}
int main() {
	int a[10], i,*p=a;
	printf("please enter the array:");
	for (i = 0; i < 3; i++) {
		scanf("%d", &a[i]);
	}
	invert(p, 3);
	printf("now the array is : ");
	for (i = 0; i < 3; i++) {
		printf("%3d", a[i]);
	}
	return 0;
}

内部函数和外部函数

变量的作用域

  • 局部变量
  • 全局变量

变量的存储类型

  • 动态存储和静态存储

    • 存储类型
      • 动态存储和静态存储:动态变量、静态变量、寄存器变量、外部变量
    • 存储区域
      • 可供用户使用的内存空间–>程序区、静态存储区、动态存储区
    • 存储类型与存储区域的关系
    • 变量的存储属性
  • 自动变量

    auto 数据类型 变量列表:
    auto int b = 10;
    /* auto可省略不写 */
    
  • 静态变量

    • 静态局部变量

      static 数据类型 变量列表;
      static int b = 10;
      
      • 初始化只进行一次,每次调用保留上次函数调用结束时的值。
      • 静态变量是与程序共存亡的,而自动变量是与程序块共存亡的
      • 若只定义不赋初值,则编译时自动赋初值0或’\0’(根据类型,数值或字符)。
    • 静态全局变量

      定义在函数外面
      
      • 不能被其他文件中的函数访问。
  • 寄存器变量

    register 数据类型 变量列表;
    register int i = 1;
    
    • 只适用于局部变量和函数的形式参数。
    • 只能是整型变量。
    • 局部静态变量不能定义为寄存器变量,不能写:“register static int a;”
  • 外部变量

    [extern] 数据类型 变量列表 [= 初始化表达式]
    

    定义性声明建立实体,引用行声明建立标识符与实体之间的联系。

    /*exmp_01.c*/
    int a;
    extern void f(int q);
    
    /*exmp_02.c*/
    extern int a;
    void f(int q){...}
    
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值