码迷,mamicode.com
首页 > 编程语言 > 详细

C语言学习第9天:函数(二)

时间:2015-07-29 22:43:53      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:

局部变量
局部变量也成内部变量,在函数内部使用,不能被该函数外的代码使用
函数调用结束后,局部变量所占的内存自动释放
局部变量应该尽量定义在程序块的开头
 全局变量
如果不初始化自动清0,局部变量如果不初始化会产生随机值;
对整个程序都是可见的
他不属于某个函数,而属于整个源文件
一般在main()函数之前声明全局变量
如不初始化,系统自动初始化为0
 静态局部变量
只被初始化一次,在第一次进入函数时创建,退出函数时保留其值;
静态局部变量和全局变量一样,系统默认初始化为0;
函数与数组
1、数组元素作为实参传递
2、数组名作为实参传递
由于数组名就是数组的首地址。用数组名作函数参数进行传递实际上是地址的传递,即修改形参数组中的内容将相应的改变实参数组中的内容。
 
拓展:
sizeof(arr)/sizeof(arr[0]);
用函数实现排序;
#include <stdio.h>
#define SIZE 10
void Sort(int *p,int len){
    int temp;
    for (int i = 0; i < len; i++) {
        for (int j = len -1; j >= i; j--) {
            if (*(p + j) > *(p + j+ 1)) {
                temp = *(p + j);
                *(p + j) = *(p + j + 1);
                *(p + j + 1) = temp;
            }
        }
    }
}
void print(int *p,int len){
    for (int i = 0; i < len; i++) {
        printf("%d,",*(p + i));
    }
}
int main(int argc, const char * argv[]) {
    int arr[SIZE] = {1,3,2,6,5,4,0,9,8,7};
    print(arr,SIZE);
    printf("\n");
    Sort(arr,SIZE);
    printf("排序之后的结果:\n");
    print(arr, SIZE);
    return 0;
}
递归
在调用一个函数的过程中又出现直接或间接的调用该函数本身,就是函数的递归调用
可以把要解决的问题转换为新问题,新问题的解决办法与原来相同,只是规模有规律的递减
每个子问题必须比原来问题的规模更小。
递归实现:5!
#include <stdio.h>
int Recursion(int n){
    if (n == 1) {
        return 1;
    }
    else{
        return n * Recursion(n - 1);
    }
}
int main(int argc, const char * argv[]) {
    int a = 0;
    printf("请输入10以内的数值:\n");
    scanf("%d",&a);
    int result;
    result = Recursion(a);
    printf("%d! = %d\n",a,result);
    return 0;
}
 

C语言学习第9天:函数(二)

标签:

原文地址:http://www.cnblogs.com/xjf125/p/4687562.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!