linux C杂记(一)

简介: <p>1、linux常识汇总:</p> <p>GNU=GNU‘s Not UNIX,为了区别于UNIX系统;</p> <p>Linux是类UNIX操作系统,免费、开源是其最大的特点,是多用户多任务且符合POSIX标准的操作系统;</p> <p>目标:非私有的、开放的操作系统;</p> <p>条款:GPL=General Public Licence;</p> <p>UNIX与Li

1、linux常识汇总:

GNU=GNU‘s Not UNIX,为了区别于UNIX系统;

Linux是类UNIX操作系统,免费、开源是其最大的特点,是多用户多任务且符合POSIX标准的操作系统;

目标:非私有的、开放的操作系统;

条款:GPL=General Public Licence;

UNIX与Linux区别:UNIX大多与硬件配套,而linux可运行在多种硬件平台上;

1991年由Linus Torvalds开发,1994年发布Linux1.0;

Linux2.6.10:2是主版本号,6是次版本号,偶数表示是稳定版本,奇数表示是不稳定版本,10表示第10次修订;

Linux的发展方向:服务器领域(主要)、嵌入式系统领域、桌面应用方面;

Linux的五大支柱:UNIX OS、MINIX OS、GNU计划、POSIX标准和Internet。

Linux下的编程语言:C、C++、Java、Perl、Python、Rudy、PHP......

 

2、控制结构是C语言的基石:

Goto语句的基本功能:无条件跳转、出错处理(核心思想:释放资源的顺序与申请资源的顺序相反)

短路计算:只计算第一个表达式就可以确定整个表达式的值的方法成为短路计算。常见的如:“与”、“非”

C语言中的循环结构:while和for在机器内部是等效的;do..while至少要执行一次循环语句,这是与while之间的区别。

switch语句:实现程序的跳转,不同的是其执行效率比if..else要高,但在程序中所占用的空间方面,要维护一张跳转表,典型的空间换取时间的例子。

 

3、优化控制结构:

表达式优化:替换程序中的乘除法、常量折叠、使用数学公式、存储问题

分支优化:改变判断顺序、使用switch语句

循环优化:一次性计算(在循环中有些计算是多次不变的,例如常量赋值)

注:加减法、位运算、移位操作->乘法运算->除法运算,速度由快至慢。

 

4、函数的本质:

函数是一种特殊的控制流程,只有理解函数的本质,才能理解程序中的存储类别和模块化程序设计的思想。

函数的本质:一段机器指令代码(一段二进制可执行代码,这些代码是一些可以被机器直接执行的指令)。

函数名的本质:一个标号,该标号的值等于内存中存储函数代码的内存空间的首地址。

 

5、变量的初始值:

对于全局变量来说,如果一个全局变量未被初始化,其初始值由编译器自动设置为0,因此使用一个全局变量时,不需要考虑其初始值问题,直接使用就可以了。全局变量属于一个源程序文件。

对于局部变量,定义了局部变量后,编译器不会将其初始化为0,而是使用其占用的内存空间原有值,这时的值是一个随机值,与本次程序无关。局部变量存储在内存的堆栈中。因此,如果对局部变量不初始化就直接引用是很危险的。

小结:C语言程序中的局部变量存储在栈上,而全局变量存储在数据段上。

目录
相关文章
|
消息中间件 存储 缓存
Linux下kafka之C/C++客户端库librdkafka的编译,安装以及函数介绍(1)
Linux下kafka之C/C++客户端库librdkafka的编译,安装以及函数介绍
2844 0
|
自然语言处理 Java 数据挖掘
Linux下跨语言调用C++实践
Linux下跨语言调用C++实践
296 0
|
弹性计算 JSON 移动开发
ECS云服务器简单使用方法以及linux下c++socket搭建web服务器
ECS云服务器使用感受;关于linux下c++socket套接字搭建web服务器的坑:http响应体与跨域请求
ECS云服务器简单使用方法以及linux下c++socket搭建web服务器
|
Oracle 算法 搜索推荐
C/C++/Linux/PostgreSQL 高性能服务器开发技术博文分类汇总(持续更新...)
C/C++/Linux/PostgreSQL 高性能服务器开发技术博文分类汇总(持续更新...)
241 0
C/C++/Linux/PostgreSQL 高性能服务器开发技术博文分类汇总(持续更新...)
|
算法 前端开发 小程序
Python | C++、Java、Linux、Go、前端、算法资料分享
Python | C++、Java、Linux、Go、前端、算法资料分享
Python | C++、Java、Linux、Go、前端、算法资料分享
|
网络协议 NoSQL 关系型数据库
《Linux多线程服务端编程:使用muduo C++网络库》学习笔记,★firecat推荐★
《Linux多线程服务端编程:使用muduo C++网络库》学习笔记,★firecat推荐★
431 0
《Linux多线程服务端编程:使用muduo C++网络库》学习笔记,★firecat推荐★
|
消息中间件 Linux Kafka
Linux下kafka之C/C++客户端库librdkafka的编译,安装以及函数介绍
Linux下kafka之C/C++客户端库librdkafka的编译,安装以及函数介绍
969 0
Linux下kafka之C/C++客户端库librdkafka的编译,安装以及函数介绍
|
JSON NoSQL C语言
linux平台下C/C++调试技术分享总结-纯干货!
  调试作为一种日常中常见的工作,提高调试水平是非常有必要的。   调试的过程是收集足够多的信息来判断出错误信息。   本文介绍调试过程中所需要的的内存相关知识、底层知识、调试技巧,通过这些知识加强信息收集,减少无用的调试工作,使调试更有目的性。   程序挂掉大多表现为内存异常,通过分析core文件中的内存信息来推断程序异常原因是一种常见的方法,而在分析的过程中需要确保收集到的信息是正确的,因此glibc内存管理原理与程序中内存使用方法是调试的基础知识。   代码段、数据段、bss段,由内核在启动程序时分配。   代码段、数据段,BSS段处于较低位置,在地址上能明显区分出来。   
413 0
|
Linux Shell
LINUX X11剪贴板/clipboard访问C代码范例
LINUX X11剪贴板/clipboard访问C代码范例
505 0
|
消息中间件 Kafka Linux
Linux qtcreator下kafka之librdkafka库的C++语言封装,实现生产和消费(2)(★firecat推荐★)
Linux qtcreator下kafka之librdkafka库的C++语言封装,实现生产和消费(1)(★firecat推荐★)
890 0