博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
023.积木与编程
阅读量:6454 次
发布时间:2019-06-23

本文共 1750 字,大约阅读时间需要 5 分钟。

堆积木与编程.
起初我们最开始的时候,不同的积木可以理解成导线,电池,电源.
我们用这样的积木堆积程序. 并且还堆积出了非门,与门,或门.
所以,我们多了几种积木,这几种积木,叫做非门,与门,或门.
后来我们又用这几种积木,堆积出了各种加法器,控制器,振荡器,触发器.
又用这些积木堆积出了内存,硬盘,CPU,显示器.
最后又用这些积木堆积出了,机器语言.
又用机器语言堆积出了汇编语言.
又用汇编语言堆积出了C语言.
用C语言堆积出了函数.
后面的课程还会继续抽象下去...
抽象的层次越高,每一个积木实现的功能越多,背后的复杂度也越高.


现在我们就可以理解成,一个函数就是一个积木.
不同的函数组合相当于不同的积木组合在一起,形成形形色色的风格.
也可以说,这是一个不断抽象的过程.
当然,操作系统也是一个非常庞大的程序,也为我们抽象出了很多概念.
现代的计算机编程语言和操作系统是互动的,息息相关.


以前的计算机程序员对计算机的工作原理和工作方式了如指掌.

计算机体系中的硬件、软件、编译器以及操作系统之间的关系简单而透明.
所以那个时候,把握计算机的整体细节和全局认识,不是太难.
而现代的计算机技术非常复杂,层层抽象的过程太多,想要一眼了解这种内在的关联非常非常的难.
计算机科学领域大多数基本思想和技术都被隐藏在众多抽象接口的层面之下了.
这种复杂性导致了无法避免的结果,领域专业化.
这就使得多门计算机科学领域应用而生,而每一个领域只涵盖某个学科中的某一个方面.


#include<stdio.h>
#include<stdlib.h>
void main() {
printf("起床\n");
system("pause");
}

 


#include<stdio.h>
#include<stdlib.h>

 

void 函数一() {

printf("吃饭\n");
}

void 函数二() {

printf("睡觉\n");
}

void main() {

printf("起床\n");
system("pause");
}

 


 

全局变量直到程序退出.

局部变量直到函数被调用完毕退出.
全局变量和局部变量不要重名.

 


 

C语言编译器生成汇编语言的时候,从上往下开始编译.
这也是被调用的函数必须在调用函数的上面声明.

 


 

把一个常用的功能独立抽象出来,写成一个函数,就可以被同一个程序或者其他程序重复使用.

单独做了一个积木.
函数可以分为有返回值和没有返回值,有参数或者没有参数.

 


 

形式参数和实际参数

形参或者实参

 


 

可变参数函数的实现.

 


 

#include<stdio.h>

#include<stdlib.h>
int add(int length,...) {
int *l_v1 = &length;
l_v1++;
int l_sum=0;
for (size_t i = 0; i < length; i++)//可变参数的实现
{
l_sum = l_sum + *l_v1;
*l_v1++;

 

}

return l_sum;
}
void main() {
add(5, 1, 2, 3, 4, 5);
printf("%d\n", add(5, 1, 2, 3, 4, 5));
system("pause");
}

 

include<stdio.h>

#include<stdlib.h>
#include<stdarg.h>
int add(int length, ...) {
va_list l_p = 0;
va_start(l_p, length);
int l_sum = 0;
for (size_t i = 0; i < length; i++)
{
l_sum = l_sum + va_arg(l_p, int);

 

}

return l_sum;
}
void main() {
add(5, 1, 2, 3, 4, 5);
printf("%d\n", add(5, 1, 2, 3, 4, 5));
system("pause");
}

 

转载于:https://www.cnblogs.com/xiaodaxiaonao/p/7619844.html

你可能感兴趣的文章
XSS研究1-来自内部的XSS攻击
查看>>
shell实战:内置(built-in)变量
查看>>
查看自己的ip和采用什么方式上网(网通/电信)
查看>>
如何在程序打开时窗口恢复上次关闭的大小和位置?
查看>>
关于Java String对象创建问题解惑
查看>>
应该是Angular2的一个bug?
查看>>
Eclipse(Helios) 初始化失败的问题
查看>>
SQL Server 2012 数据库镜像配置完整篇
查看>>
MariaDB 10之TokuDB存储引擎
查看>>
Flex与.NET互操作(一):基于Socket的网络连接
查看>>
WPF中Style的使用
查看>>
组策略设置服务器安全-----不显示最后的用户名
查看>>
慢查询日志的另外一种方法
查看>>
引发CPU占用率快100%的可能原因
查看>>
公司今年的一道校招笔试题--五猴分桃
查看>>
[数据恢复答疑]RAID5有一块硬盘离线后,为什么不建议马上做REBUILD?
查看>>
DB2临时表在SQL过程和SQL语句中的测试总结
查看>>
Exchange 2013 EAC之管理员重置普通用户密码
查看>>
三线跑酷例子BlocksRun的技术点
查看>>
如何应对DDOS网络攻击
查看>>