c程序第一篇1

>>c语言一个概述

所有语言的起源都是ALGOL语言1960---1969之间提出来的,比如我们是1995年出生的人,那么第一个编程语言出现离我们出生大约就有26年左右。这里我们也要提一下,就是世界上第一个程序员,那么他是谁呢?是一个女人,拜伦的女儿,阿达洛芙莱斯,她创造了第一个算法。

1972年的时候,Dennis Ritchie在贝尔实验室创造了传统的c语言

1990年美国国家标准局(American National Standards Institate)与iso(国家标准的组织),推出了c89

C99:加入了c++Java的一些东西,提高了c语言的性能

C语言的主要特点:

第一点;它的运行是非常快的,它仅次于机器语言和汇编语言

第二点;它有丰富的内置函数集和运算符可以用来编写任意的复杂程序

第三点;它融合了汇编语言的性能和高级语言的特性,非常适合编写系统软件和商业软件

第四点;c语言有高度的可移植性

第五点;c语言适合于结构化程序设计

第六点;c语言自我扩展能力是很强的,也就是说,我们可以不断的将自己的函数添加到c函数库里面去。

下面第一个程序hello world:

 c程序第一篇1_第1张图片

 

进入下一个程序:两个数相加

       c程序第一篇1_第2张图片

下面进入下一个程序:利息的计算问题

来计算每年年末的一个投资金额,假设利息是11%,用两列显示出年份与相应的金额数目,我们必须知道一个计算公式

年末值=年初资*1+利息率)

0         50000.00

1         5550.00

2         6160.50

3         6838.15

4          759.035

。。。。

10         14197.11

c程序第一篇1_第3张图片

 

#define:是一个预处理编译器指令,而不是程序语句,因此,它是不能加上分号结尾的。符号常量通常要大写的一个形式,这样就很容易与小写字母变量区分,符号常量不在声明部分中声明。

进入下面一个程序代码:子例程的使用,直白点说,就是定义一个函数使用

c程序第一篇1_第4张图片

下面进入下一个程序:数学函数的使用

大概输出的形式如下:

Angle         Cos(Amgle)

0 1.0000

10 0.9848

20 0.9397

................

180 -1.0000

c程序第一篇1_第5张图片

这里强调一点啊,编程的风格很重要,尽量的让自己的代码清晰易读,适当的加入注释,因为代码不是你自己看,还有别人要来维护你写的代码,对于调试和测试程序很重要

Windows中编译c语言的执行流程:vs2008

编辑源程序——》编译源程序,如果语法错误,就又要重新编辑源程序,如果没错往下走————》与系统库进行链接成可运行的目标代码(obj)———》运行目标代码———》再来判断是逻辑错误还是数据错误,如果数据错误,输入数据,重新走目标代码,如果逻辑错误,就要回到开头了。

如何用控制台cmd来运行c程序:

用文本编辑器编辑一个.c的文件,也就是编辑源程序,然后在打开vs命令提示工具,然后在进入到相应的目录,然后cl 文件名,就会执行编译,链接的工程,然后执行.exe文件就可以了。

linux操作系统当中:vi 文件名———>gcc 文件名———>./a.out

这里需要我们注意几个问题:

Gcc有几个可配的参数,你可用可不用,但是,在某些情况下,你就必须使用;

-o 用于指定生成可执行文件的名字

-E 只对源文件进行预处理

-c 只对原文件进行预处理后的编译工作,.o文件继续gcc,就会变成一个可执行的文件

-lm 在使用数学函数库的时候,必须加上这个参数,编译源文件

下面我再来说一下,gcc的处理工程:

1.预处理 这个阶段用来处理所有的预处理指令

2.编译 对预处理后的代码进行一个翻译工作,得到计算机识别的一个格式,会产生一个扩展名为.o的目标文件

3.链接 把目标文件和其他一些必要的文件链接成一个可执行的文件,也就是a.out文件

第一章后面的习题做一些讲解说明:

C语言中预处理指令后面是不用加分号的

程序一行只能有一个语句,这样可以增强程序的可读性

在这里,我在来说一下,#include指令吧,在c语言中,很多的函数是保存在c函数库里面的,库函数按种类进行了一个分组,保存在不同的头文件中,如果要访问库中的函数,就要告诉编译器去访问哪个库。

我还得说一下注释问题,多行注释不能包含多行注释,可以包含单行注释

对于int main(){}如果没有return 返回一个整型,是没有问题的,不会报错。但是,如果没有包含头文件#include那么,它会报错的。

突然就发现了一个问题,就是说,在linux操作系统里面,是必须返回return 0的,在winows里面可以不用。

C语言这个东西,是严格区分大小写的。也就是说includeInclude是不一样的

问题:为什么使用#define?为什么使用#include?

使用#define就是说定义一个符号常量,当我们在程序里面经常使用到这个常量的时候,方便我们以后进行修改。使用#inlcude就很简单了啊,因为我们需要调用库函数,当我们需要什么库函数的时候,就要调用相应的头文件,才能完成我们的程序。

这里还有一个小知识点main()==int main();

下面是c程序大致结构:

文档部分-》链接部分->定义部分->全局声明部分->main()函数部分->子程序部分

第一章的编程练习去看/home/pxx/c/c_programmer_design/1_programmer_practice

给大家说一下啊,形参可以实一样的,比如上面声明了int a ,int b 的形参,下面也可以你这样来申请.

下面我们来写一个程序,用c来写一个温度转换程序,当输入摄氏度就转换成华式度,当输入的是华式度就转换成摄氏度

c程序第一篇1_第6张图片

下面我们再来写一个程序,就是计算机,进行+ - * / 的运算

c程序第一篇1_第7张图片

计算机里面不能进行支持直接取余的运算。

第一章常量、变量及数据类型和c语言的基础知识

先来讲解一下c语言的转义字符:

\a:响铃 7linux里面/a就是什么都没有

\b:退格 8将当前位置移到前一列,也就是\b的位置占据前面字符的位置,然后前面的字符就没有了

\n:换行 10

\r:回车 13 \r后面的字符移到本行的开头

\t:水平制表符

\\:代表反斜线

\’:就代表是单引号

\”:就代表双引号

\0:空字符 0

\ddd:1-3位八进制数代表的字符,这个只能三位用putchar加上单引号来打印

\xhh:12位二进制代表的程序,这个只能两位用putchar加上单引号来打印

下面来写一个程序就是转义字符的练习:

c程序第一篇1_第8张图片

注意问题:putcahr只能是单引号,是输入字符时,只能一次输入一个字符,不管是转义字符,还是正常的字符,一次只能加上单引号做一次输出。只有在一种情况下,putchar是不需要加单引号的,那就是用字符的ascii码来打印字符。还有一个问题就是,printf在什么情况下都需要加上双引号来输出字符,并且只能是字符的本身,ascii码和\ddd\xhh都不可以。

下面我就来说一下,windows里面如何调试一个程序,针对于vs2008来说;

首先,一个程序你要先进行调试才可以看到内存

第一步:下断点,注意一下断点的位置,程序执行到断点的位置会停止,按f5断点会往下走,知道碰到下一个断点。

第二步:点击开始调试

如何看内存:调试->窗口->内存->内存2

断点上面有箭头,说明程序还没有执行这一行

c程序第一篇1_第9张图片

 

还有一点就是说,变量在计算机里面,是按十六进制存放数据的

常量:常量就是计算机内存里面不可以改变的数据

变量:就是计算机内存里面经常改变的量

在同一个时间,计算机内存空间里面只能保存一个值。这句话,可以这么理解,在同一个时间,也就是,程序的一次运行期间,一个地址所保存的变量,是不会改变的。比如下面这段代码,在一个运行期间,a,b,res的地址,你怎么来打,都是不会变的,除非你重新执行一下这段代码。

c程序第一篇1_第10张图片

Res回得到一个你根本意想不到的值。系统会自动赋上一个初始值,所以变量最好初始化,以免你得到你意想不到的结果

>>变量的内存运行机制

C语言从main函数开始也从main函数结束

c程序第一篇1_第11张图片

Cpu内部运行原理:

19711115日,Intel公司的特德 霍夫发明了世界上第一个未处理器--4004虽然只有45条指令,而且每秒只能执行5万条指令,但他的集成度却很高,它被称为第二次世界大战以来最有影响力的科学家之一

Intel最重要的芯片型号:8086  197868号 自此进入了X86的时代 这是16位的处理器,寻址空间1M

Intel80386的诞生,Intel正式进入了32位微处理器的时代,寻址空间达到4G

Cpu的根本任务是执行指令,cpu从逻辑上分成3个单元,控制器,运算器,存储器,这三部分有cpu的内部总线连接起来;

c程序第一篇1_第12张图片

控制器:是整个cpu的指挥控制中心,比如像上面的代码,他会先通过控制器找到a的地址,在找到b的地址,热后在运算器里面相加,执行运算

运算器:运算器的全部操作都是由控制器发出的信号来指挥的,所以他是执行部件

存储器:里面包含了cpu片内缓存和寄存器组,是cpu暂时存放数据的地方,里面保存着那些等待处理,或者已经处理了的数据,cpu访问寄存器的时间比访问内存的时间要短,采用寄存器,可以减少cpu的访问次数,从而提高cpu的访问效率

Ok,x现在我们跳过cpu来看问题,变量的定义以及为什么要初始化?

因为比如,你打开了qq,然后退出了,当qq退出,内存里面就会存留一些垃圾数据,当一个新变量占用这段空间,毕竟,你也不会知道,这个新变量会占据的空间是那一段,就比如说,很不巧的是,它刚好把刚刚qq退出那个位置给占了,如果变量没有初始化,他就会默认吧垃圾数据带上,造成你的程序莫名的混乱,c,c++开发,变量必须初始化。


你可能感兴趣的:(IT,c语言,编程,指针,windows,c编程)