函数的形式参数如果是数组,函数被激活的时候不会创建新的数组而是会使用实际参数所指定的数组。
如果一个函数执行过程中会得到多个新数据,可以通过形式参数中的数组把所有这些新数据报告给调用函数。
如果函数使用数组作为形式参数,则必须用另外一个参数表示数组中的变量个数。
递归函数在执行过程中还会再次调用自己
使用循环编写程序处理数字序列的方法叫做递推
作用域指的是可以使用某个变量的所有语句
生命周期指的是变量可以被使用的时间范围
声明在函数内部的变量叫做局部变量,它的作用域是函数里变量声明语句后面的所有语句,它的生命周期是函数的运行期间
声明在所有函数之外的变量叫做全局变量,它的作用域是程序中的所有语句,它的生命周期是整个程序运行期间。
全局变量被自动初始化成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;
}
分享到:
相关推荐
由丹尼斯·里奇(Dennis MacAlistair Ritchie)以肯尼斯·蓝·汤普森(Kenneth Lane Thompson)设计的B语言为基础发展而来,在它的主体设计完成后,汤普森和里奇用它完全重写了UNIX,且随着UNIX的发展,c语言也得到...
总体上必须清楚的: 1)程序结构是三种: 顺序结构 、选择结构(分支结构)、循环结构。 2)读程序都要从main()入口, 然后从最上面...6、break可用于循环结构和switch语句。 7、逗号运算符的级别最低,赋值的级别倒数第二。
C语言基础课件对初学C语言者很有帮助,里面课件含有: 1.程序设计基础 2.数据类型 3.循环语句 4.数组 5.函数 6.指针 7.预处理命令 8.文件操作 9.结构体
C语言基础day6作业
由丹尼斯·里奇(Dennis MacAlistair Ritchie)以肯尼斯·蓝·汤普森(Kenneth Lane Thompson)设计的B语言为基础发展而来,在它的主体设计完成后,汤普森和里奇用它完全重写了UNIX,且随着UNIX的发展,c语言也得到...
C 语言基础教程 第一章 C语言概述 第二章 程序的灵魂-算法 第三章 数据类型、运算符与表达式 第四章 顺序程序设计 第五章 选择结构程序设计 第六章 循环控制 第七章 数组 第八章 函数 第九章 预处理命令 第十章 ...
---------C基础--------- 第一章 C语言基本知识 【要点1】C程序 用C语言编写的程序被称为C语言源程序,源程序文件的后缀名为".c";源程序经编译后生成后缀名为".obj"的目标文件;目标文件与各种库函数连接,就生成...
游戏开发C语言基础视频完整版章节1:计算机体系结构课时1C与C 课程大纲简介09:18课时2游戏开发技术的两大流派及为什么要学C 26:31课时3C 与其它语言及为什么C 语言的执行效率高11:07课时4什么是计算及中国与外国的第...
第一章 C语言概论 第二章 C语言基础 第三章 C语言的基本控制结构 第四章 数 组 第五章 指 针 第六章 函 数 第七章 结构与联合 第九章 文 件
C语言基础(Day6)思维导图
在C语言中使用的词汇分为六类:标识符,关键字,运算符,分隔符,常量,注释符等。 1.标识符 在程序中使用的变量名、函数名、标号等统称为标识符。除库函数的函数名由系统定义外,其余都由用户自定义。C 规定...
1基础知识.pdf 2运算符&表达式&数据类型.pdf 3输入输出 .pdf 4控制语句.pdf 5数组与指针.pdf 6函数.pdf 1基础知识.ppt 2运算符&表达式&数据类型.ppt 3输入输出 .ppt 4控制语句.ppt 5数组与指针.ppt 6函数.ppt
本文为大家介绍了六个单片机C语言编程基础源码。
零基础入门C语言-王桂林 -v2-.pdf 2019年6月最新版,
第一章: C语言概论 第二章: 数据类型、运算符、表达式 ...第六章:指针 第七章:结构与联合 第八章:枚举,位运算 第九章:预处理 第十章:文件 附录一:Turbo C(V2.0)编译错误信息 附录二:Turbo C(V2.0)使用指南
A.6 转换 A.7 表达式 A.8 说明 A.9 语句 A.10 外部说明 A.11 作用域与连接 A.12 预处理 A.13 语法 附录B 标准库 B.1 输入与输出:<stdio.h> B.2 字符类测试:<ctype.h> B.3 字符串函数:<string.h> B.4 ...
本文是txt文本里面有网盘永久链接视频,C语言基础,包括:002第二章 数据类型,运算符和表达式01,007第三章 顺序程序设计01,014第四章 分支结构程序05,016第五章 循环控制结构程序01,027第六章 数组05,032第七...
由丹尼斯·里奇(Dennis MacAlistair Ritchie)以肯尼斯·蓝·汤普森(Kenneth Lane Thompson)设计的B语言为基础发展而来,在它的主体设计完成后,汤普森和里奇用它完全重写了UNIX,且随着UNIX的发展,c语言也得到...
# C语言基础语法用例教程 本教程将为您介绍C语言的基础语法的使用案例知识。 ## 目录 1. [简介](#简介) 2. [变量和数据类型](#变量和数据类型) 3. [运算符](#运算符) 4. [控制流程](#控制流程) 5. [函数](#函数) ...