`

C语言基础六

    博客分类:
  • c
c 
阅读更多
函数的形式参数如果是数组,函数被激活的时候不会创建新的数组而是会使用实际参数所指定的数组。
如果一个函数执行过程中会得到多个新数据,可以通过形式参数中的数组把所有这些新数据报告给调用函数。
如果函数使用数组作为形式参数,则必须用另外一个参数表示数组中的变量个数。

递归函数在执行过程中还会再次调用自己
使用循环编写程序处理数字序列的方法叫做递推

作用域指的是可以使用某个变量的所有语句
生命周期指的是变量可以被使用的时间范围

声明在函数内部的变量叫做局部变量,它的作用域是函数里变量声明语句后面的所有语句,它的生命周期是函数的运行期间

声明在所有函数之外的变量叫做全局变量,它的作用域是程序中的所有语句,它的生命周期是整个程序运行期间。
全局变量被自动初始化成0.

声明在函数内部的大括号里的变量叫做块变量,它的作用域是块内的所有语句,它的生命周期是块的执行期间

块变量和局部变量被销毁后再次被使用的时候,它内部记录的数据不一定是上次销毁时的数据。

不同类型的变量是可以重名的。在使用的时候采取就近原则。

后进先出是一种数据管理方式,特点是首先处理最后得到的数据,最后处理最先得到的数据。
以后进先出的方式管理数据的所有代码统称为栈

sleep函数可以让程序停止指定的秒数。需要包含头文件unistd.h。停止的时间不精确。

程序在内存中是分段落存放的
代码段用来存放所有的语句,这个段落在运行的时候是不可以修改的。

栈是一个用来存储数据的段落,局部变量,形参和返回值被放置在这个段落里。栈的大小是随时调整的,每当一个新函数被激活的时候栈中会专门开辟一段空间用来存储这个函数的所有局部变量和形参。每当一个函数结束的时候它所占据的栈空间被自动丢弃。

堆是另一个用来存储数据的段落。堆中变量的生命周期是程序员决定的。堆的大小非常大,可以容纳下所有的数据。

auto关键字可以用来声明变量,例如
auto int value;
所有局部变量都是自动变量

register关键字也可以用来声明变量,例如
register int value;
这种变量叫做寄存器变量

volatile关键字也可以用来声明变量,例如
volatile int value;
这种变量随时可能变化,这种变化可能是由程序以外的因素造成的。

static关键字可以用来声明静态变量,静态局部变量的生命周期扩大到整个程序运行期间,它只会被初始化一次。静态全局变量的作用域被缩小到当前文件。

const关键字可以用来声明不可变变量,例如
const int value;
这里的value只能在初始化的时候被赋值,以后就不可以了。


/*
	函数练习
*/
#include <stdio.h>
int neg(int value) {
    return 0 - value;
}
void negs(int value[], int num) {
    int loop = 0;
	 for (loop = 0; loop <= (num - 1); loop++) {
        value[loop] = 0 - value[loop];
	 }
}
int main() {
    int values[3] = {-4, 8, -7};
	 negs(values, 3);
	 printf("values[0]是%d\n", values[0]);
	 printf("values[1]是%d\n", values[1]);
	 printf("values[2]是%d\n", values[2]);
    //printf("相反数是%d\n", neg(7));
    return 0;
}


/*
	函数练习
*/
#include <stdio.h>
void square(int values[], int num) {
    int loop = 0;
	 for (loop = 0; loop <= (num - 1); loop++) {
        values[loop] *= values[loop];
	 }
}
int main() {
    int values[] = {3, -6, 2, -9}, loop = 0;
	 square(values, 4);
	 for (loop = 0; loop <= 3; loop++) {
        printf("%d ", values[loop]);
	 }
	 printf("\n");
    return 0;
}



/*
	递归练习
*/
#include <stdio.h>
void print(int value) {
    printf("%d\n", value);
	 if (1 != value) {
	     print(value - 1);
	 }
}
int main() {
    print(9);
    return 0;
}




/*
	递归练习
*/
#include <stdio.h>
int func(int num) {
    if (1 == num) {
        return 1;
	 }
	 else {
        return num * func(num - 1);
	 }
}
int main() {
    printf("5的阶乘结果是%d\n", func(5));
    return 0;
}




/*
	递归练习
*/
#include <stdio.h>
void han(int num, char c1, char c2, char c3) {
    if (1 == num) {
        printf("%d:%c--->%c\n", num, c1, c3);
	 }
	 else {
        han(num - 1, c1, c3, c2);
		  printf("%d:%c--->%c\n", num, c1, c3);
		  han(num - 1, c2, c1, c3);
	 }
}
int main() {
    han(3, 'A', 'B', 'C');
    return 0;
}





/*
	变量类型练习
*/
#include <stdio.h>
int value1;
void print();
int main() {
    int value = 3, loop = 0;
	 for (loop = 0; loop < 3; loop++) {
        {
        int value2;
		  printf("value2是%d\n", value2);
		  value2 = loop;
		  }
		  int value3 = loop + 4;
		  int value4 = loop + 5;
		  int value5 = value3 + value4;
	 }
	 printf("%d\n", value1);
	 value1 = 5;
    print();
	 value1 = 7;
	 print();
    return 0;
}
void print() {
    printf("%d\n", value1);
}


/*
    栈练习
*/
#include <stdio.h>
int stack[10];
int num;
int is_empty() {
    return 0 == num;
}
int is_full() {
    return 10 == num;
}
void push(int value) {
    stack[num] = value;
	 num++;
}
void pop() {
    num--;
}
int peak() {
    return stack[num - 1];
}
int main() {
    int value = 0, loop = 0;
	 for (loop = 0; loop <= 2; loop++) {
        printf("请输入一个数字:");
        scanf("%d", &value);
		  push(value);
	 }
	 for (loop = 2; loop >= 0; loop--) {
        value = peak();
        printf("%d ", value);
		  pop();
	 }
	 printf("\n");
    return 0;
}


/*
	秒表练习
*/
#include <stdio.h>
#include <time.h>
#include <unistd.h>
int main() {
    unsigned int start = time(0);
	 printf("%4d", 0);
	 fflush(stdout);
	 for(;;) {
        sleep(1);
		  printf("\r%4d", (int)(time(0) - start));
		  fflush(stdout);
	 }
    return 0;
}


/*
	变量关键字练习
*/
#include <stdio.h>
void f() {
    static int value = 2;
	 printf("value是%d\n", value);
	 value = 3;
}
void f1() {
    int value = 5;
	 int value1 = 7;
	 int value2 = value + value1;
}
int main() {
    f();// value = 2
	 f1();
	 f();// value = 3
    return 0;
}





分享到:
评论

相关推荐

    C语言基础大全.pdf

    ### C语言基础大全 #### 一、基本语法 1. **语句**:C语言的程序是由一系列的语句组成的,这些语句以分号(`;`)作为结束标记。虽然C语言允许将多个语句写在同一行内,或者将一个语句拆分成多行书写,但为了提高...

    C语言基础知识题库(判断、选择题)

    C语言基础知识题库详解 C语言是一种结构化程序设计语言,具有强大的功能和灵活性。作为一门基础语言,C语言广泛应用于操作系统、嵌入式系统、数据库、网络通信等领域。 本题库旨在帮助学习者巩固C语言基础知识,...

    C语言基础教程(全)

    本教程“C语言基础教程(全)”旨在为初学者提供全面且深入的C语言学习指导。 教程内容可能包括以下几个方面: 1. **C语言概述**:介绍C语言的历史、特点和应用领域,让学习者对C语言有一个初步的认识。 2. **基本...

    C语言基础教程 吕凤翥

    《C语言基础教程》是吕凤翥先生撰写的一本经典C语言教材,尤其适合初学者入门。这本书以其清晰的语言和实例解析,深受广大编程爱好者的喜爱。在学习C语言的过程中,掌握其基础知识至关重要,因为C语言是许多现代编程...

    C语言基础课件 ppt

    《C语言基础课件》是针对初学者及计算机考级者设计的一套全面而详细的教程,旨在帮助读者从零开始掌握C语言的基础知识。这套课件由清华大学出版社出版,其内容涵盖C语言的核心概念和常见编程技巧。通过PPT的形式,...

    C语言基础学习包

    【标题】"C语言基础学习包"所涵盖的知识点主要围绕C语言的基础概念、语法结构、数据类型、控制结构、函数、数组、指针等方面展开。C语言是一种强大的、低级的编程语言,广泛用于系统编程、嵌入式开发、软件工程等多...

    C语言基础 C语言基础 C语言基础 C语言基础.zip

    由丹尼斯·里奇(Dennis MacAlistair Ritchie)以肯尼斯·蓝·汤普森(Kenneth Lane Thompson)设计的B语言为基础发展而来,在它的主体设计完成后,汤普森和里奇用它完全重写了UNIX,且随着UNIX的发展,c语言也得到...

    c语言基础教材 零基础学习c语言

    "C语言基础教材"是一份专为初学者设计的学习资源,旨在帮助零基础的学习者逐步掌握C语言的核心概念和技术。 这份教材以HTML格式提供,方便在网页浏览器中阅读和学习,同时也便于检索和打印。HTML文档通常包含丰富的...

    C语言基础教程---电子教案

    C语言基础教程是一门针对初学者的编程课程,旨在教授如何使用C语言进行程序设计。C语言是一种广泛应用的计算机编程语言,因其高效、灵活和强大的功能而被广泛应用于系统编程、软件开发、嵌入式系统等多个领域。本...

    C语言基础.ppt

    **C语言基础** C语言是一种强大的、通用的编程语言,起源于1972年,由丹尼斯·里奇在贝尔实验室开发。它是许多现代编程语言的基石,因其高效、灵活和可移植性而广受程序员喜爱。"C语言基础.ppt"这份教程将引导初学...

    C语言基础练习面试题

    本资源“C语言基础练习面试题”是针对初学者和有一定经验的开发者设计的一系列练习,旨在帮助他们巩固C语言基础知识,提升编程技能,并为面试做好准备。 在C语言的基础部分,这些练习涵盖了以下几个关键知识点: 1...

    C语言课件(C语言基础)

    C语言是一种广泛应用于系统编程、应用编程、嵌入式开发等多个领域的高级编程语言,它的语法简洁明了,是学习其他编程语言的良好基础。本课件集合涵盖了C语言的基础知识,适合初学者入门学习,同时也对准备二级考试的...

    c语言基础练习题及答案

    根据给定的C语言基础练习题及其描述,我们可以总结出一系列重要的C语言知识点,这些知识点不仅对于在校大学生,而且对于所有初学者都是极其宝贵的。下面将详细解释这些知识点: ### 1. C语言标识符规则 C语言中的...

    C语言基础程序代码合集

    本资源“C语言基础程序代码合集”旨在为初学者提供一系列基础的C语言程序示例,帮助他们理解和掌握C语言的核心概念。 在C语言中,基础知识点主要包括以下几个方面: 1. **基本数据类型**:C语言有几种基本的数据...

    c语言基础知识.pdf

    ### C语言基础知识详解 #### 一、C语言概论及发展历程 C语言作为一种重要的编程语言,在计算机科学领域占据着举足轻重的地位。它最早出现于20世纪70年代初期,由美国电话电报公司(AT&T)的贝尔实验室开发。1978年...

    超实用的C语言基础知识总结

    "C语言基础知识总结" 本资源摘要信息将对C语言的基础知识进行总结,涵盖了计算机基础知识、C语言基础知识、标识符、整数与实数、算术表达式、赋值表达式、复合赋值表达式、自加表达式、逗号表达式、强制类型转换、...

    C语言基础教程.pdf

    C语言基础教程.pdf 本资源详细介绍了C语言的基础知识,包括C语言的产生与发展、特点、Turbo C语言概述等内容。 1. C语言的产生与发展 C语言是由美国的Dennis Ritchie设计发明的,于1972年首次在UNIX操作系统的DEC...

    C语言基础知识PPT文件

    这个“C语言基础知识PPT文件”显然是一份面向初学者的学习资料,旨在帮助用户掌握C语言的基本概念和语法。 首先,C语言的基础部分通常包括以下几个方面: 1. **数据类型**:C语言提供了多种基本数据类型,如整型...

Global site tag (gtag.js) - Google Analytics