C语言的基础
任何事物的运行离不开两个部分,一个部分是“事物”,一个部分是“运行”,前者是状态,在C语言中表现为常量、变量等,后者是过程,在C语言中表现为语句、函数等。
语言是表达的工具,C语言也不例外,它是人告诉编译器的“语言”,然后编译器把它转化为汇编语言,汇编语言就是编译器告诉电脑的“语言”,我们用C语言写成的文件就叫代码,编译器翻译后的文件就叫程序。编译器把代码翻译成程序分为三个过程:预处理、编译和链接。有了程序,人就可以与电脑进行交互了,人对电脑说的“话”就叫输入,电脑对人说的“话”就叫输出。
无规矩不成方圆,接下来我们就说说C语言编程的“规矩”。
任何语言都是线性结构的,不论我们大脑里想的东西有多么地复杂,我们嘴上说的话都只能一个字一个字地吐出来,用C语言写的代码同样也是一维的,可能很多人不屑这么一个事实,在编译原理中,所有文法的分析都离不开这么一个基本事实,我们在写代码时也不知不觉地线性化。先来看一个简单的例子:
如果把整个程序比作是一条“线”,那么这条“线”首先要有一个入口,这个入口就是main函数的调用("main(agc, argv);"),一直到return语句(或者exit函数)的执行("return 0;"),我们就离开了程序,这就是整条“线”的“线头”和“线尾”,准确地说是线头的“珠子”和线尾的“珠子”,中间串起来的“珠子”就是一条一条的语句,这就是程序的基本框架。
开头的#include是预处理指令,预处理指令对应的是“预处理”阶段,语句对应的是“编译”阶段,说白了,预处理指令是为语句服务的,就比方说,这里的"#include <stdio.h>",它引入了scanf函数和printf函数的定义,这样我们才能使用scanf函数调用和printf函数调用的语句。
最基本的语句有运算语句、控制语句和输入/输出语句(函数调用的一种),分述之:
(1) 运算语句
基本的数据类型都是数字类型,有整数类型、实数类型和复数类型三种,布尔类型(_Bool)和字符类型(char)本质上是枚举类型(enum),而枚举类型本质上又是整数类型。不同的类型有不同的格式和长度,整数分为自然数(unsigned)和整数(默认),也分为short(16位)、int(32位或64位)和long(64位),实数分为float(32位)、double(64位)和long double(128位),复数分为float _Complex(64位)、double _Complex(128位)和long double _Complex(256位)。我们也可以用typedef语句定义新的类型,但只是给原有的数字类型取了一个昵称罢了。
数量分为常量和变量两种,常量是不变的,如1.23,变量是变化的,如x,如果常量是一个具体的物体,那么变量就是一个装载该物体的箱子,它可以存储任何一个常量。变量需要声明其类型,而常量一看便知,无需指定。表达式是把常量或变量通过运算符粘合起来的东西,运算符是一种符号化的“函数”,它借鉴了数学运算的表达方式,大大地简化了算术运算、关系运算、逻辑运算等数学运算的输入。赋值语句的左边是变量,右边是表达式,自增运算符++和自减运算符--本质上就是赋值语句。
(2) 控制语句
控制语句是非常重要的,如果没有他,一条“直线”是很难玩出什么花式出来的,它使得当前的运行能够在程序上来回跳转,大大地简化了重复的描述,增强了C语言的描述能力,就连后面要讲的函数本质上也是一种跳转。控制语句分为有条件的与无条件的,有条件的分为选择语句和循环语句,选择语句的鼻祖是if语句,在此基础上延伸出了switch语句,而循环语句的鼻祖是while语句,在此基础上延伸出了do语句和for语句,无条件的就叫跳转语句,跳转语句的鼻祖是goto语句,在此基础上延伸出了break语句、continue语句和return语句,break和continue主要是为了循环语句设计的,而return语句是为了跳出函数而设计的,还有一个exit函数是为了跳出整个程序而设计的。
(3) 输入/输出语句
暂且只需知道标准输入函数scanf和标准输出函数printf即可。
C语言的基础的更多相关文章
- iOS开发系列--C语言之基础知识
概览 当前移动开发的趋势已经势不可挡,这个系列希望浅谈一下个人对IOS开发的一些见解,这个IOS系列计划从几个角度去说IOS开发: C语言 OC基础 IOS开发(iphone/ipad) Swift ...
- Golang友团无闻Go语言Web基础视频教程
教程内容:GO语言资料Golang友团无闻Go语言编程基础Golang友团无闻Go语言Web基础教程 Go语言Web基础教程列表:[Go Web基础]12Go Web 扩展学习.mp4[Go Web基 ...
- 10个经典的C语言面试基础算法及代码
10个经典的C语言面试基础算法及代码作者:码农网 – 小峰 原文地址:http://www.codeceo.com/article/10-c-interview-algorithm.html 算法是一 ...
- Linux基础与Linux下C语言编程基础
Linux基础 1 Linux命令 如果使用GUI,Linux和Windows没有什么区别.Linux学习应用的一个特点是通过命令行进行使用. 登录Linux后,我们就可以在#或$符后面去输入命令,有 ...
- LINUX下C语言编程基础
实验二 Linux下C语言编程基础 一.实验目的 1. 熟悉Linux系统下的开发环境 2. 熟悉vi的基本操作 3. 熟悉gcc编译器的基本原理 4. 熟练使用gcc编译器的常用选项 5 .熟练使用 ...
- Java学习-033-JavaWeb_002 -- 网页标记语言JSP基础知识
JSP 是 Sun 公司提倡的一门网页技术标准.在 HTML 文件中,加入 Java 代码就构成了 JSP 网页,当 Web 服务器访问 JSP 请求的时候,首先执行其中的 Java 程序源码,然后以 ...
- c语言学习基础:[1]开发工具介绍
标签:c语言 1 2 3 4 分步阅读 学习编程语言的童鞋们一开始接触到的最多的估计就是C语言了,其次才是什么java.c++等,可以说学习c语言是我们走向编程世界的一座桥梁,学好它,对于我们学习和研 ...
- 关于JS脚本语言的基础语法
JS脚本语言的基础语法:输出语法 alert("警告!"); confirm("确定吗?"); prompt("请输入密码");为弱 ...
- 2.4JAVA基础复习——JAVA语言的基础组成数组
JAVA语言的基础组成有: 1.关键字:被赋予特殊含义的单词. 2.标识符:用来标识的符号. 3.注释:用来注释说明程序的文字. 4.常量和变量:内存存储区域的表示. 5.运算符:程序中用来运算的符号 ...
- 2.3JAVA基础复习——JAVA语言的基础组成函数
JAVA语言的基础组成有: 1.关键字:被赋予特殊含义的单词. 2.标识符:用来标识的符号. 3.注释:用来注释说明程序的文字. 4.常量和变量:内存存储区域的表示. 5.运算符:程序中用来运算的符号 ...
随机推荐
- 打造最高效的科研环境之Emacs插件们
0 盲人摸象 作为初学者,迫切的需求就是直接上手Emacs并打造包含自动补全命令在内的科研环境. 和网上众多的插件安装的教程相比,我认为找到一个与自己需求匹配的Emacs配置环境来得更方便. 本例中, ...
- C# 4.0 新特性dynamic (待学习)
随便翻看了一下dynamic,在网上拷贝了一个例子,先贴出来等有空了再慢慢消化 static void Main(string[] args) { dynamic d = new MyDynamicO ...
- Kingsoft Office Writer 2012 8.1.0.3385 - (.wps) Buffer Overflow Exploit (SEH)
#!/usr/bin/python # Exploit Title: Kingsoft Office Writer v2012 8.1.0.3385 .wps Buffer Overflow Expl ...
- JS中函数的调用和this的值
调用每一个函数会暂停当前函数的执行,传递控制权和参数给新函数.除了声明时定义的形式参数,每个函数还接收两个附加的参数:this 和 arguments. 参数this在面向对象编程中非常重要,他的值取 ...
- keep the bar green to keep the code clean——Junit详解(二)
测试用例&测试套件 举个栗子: 编写MyStack类模拟栈,并对其进行测试用例编写测试: 编写文件删除方法,并对其删除测试. 不再做演示,戳此获取代码 MyStack类: public cla ...
- HTML+CSS--继续学习
为网页中的文字设置字体为宋体. body{font-family:"宋体";} 文字以斜体样式在浏览器中显示: p a{font-style:italic;} 设置文字以粗体样式显 ...
- OC内存管理
内存问题 野指针异常:访问所有权的内存,如果想要安全访问,必须确保空间还在(确保访问的内存不是僵尸对象) 内存泄露:空间使用完之后没有及时释放 过度释放:对一块空间释放多次,立刻crash 内存溢出: ...
- my vim
set nu set cindent set smartindent set cursorline set showcmd set completeopt=preview,menu set autow ...
- greendao 3.1.0在android studio中配置
1 项目根build.gradle classpath 'org.greenrobot:greendao-gradle-plugin:3.1.0' 2 app中build.gradle apply p ...
- ArrayList和Vector的区别
3.ArrayList和Vector的区别 答: 这两个类都实现了List接口(List接口继承了Collection接口),他们都是有序集合,即存储在这两个集合中的元素的位置都是有顺序的,相当于一种 ...