当前位置:首页 > > 充电吧
[导读]2012—7—25C语言回顾—C语言的特点介于低级语言和高级语言之间的中级语言控制性高效性可移植性面向程序员 C语言程序实现的七个步骤1 定义程序目标2 程序设计3 编写代码4 编译5 运行程序6 测

2012—7—25

C语言回顾

—C语言的特点

介于低级语言和高级语言之间的中级语言

控制性

高效性

可移植性

面向程序员

 

C语言程序实现的七个步骤

1 定义程序目标

2 程序设计

3 编写代码

4 编译

5 运行程序

6 测试和调试程序

7 维护和修改程序

 

C语言的编译机制四个部分

预编译————>编译————>汇编————>连接

预编译是产生干净的C的过程去除一些不需要的部分比如注释之类

编译的过程是将C语言程序中非汇编代码转换为汇编代码

汇编就是产生目标代码的过程

连接指连接启动代码和库代码生成机器码

 

C语言中有37个关键字其中main 不是关键字只是程序的一个入口

 

标识符的定义

标识符用来标识变量名,符号常量名,函数名,数组名,类型名,文件名的有效字符序列

标识符的组成规则:

不能是关键字

开头只能是字母和下划线

随后跟若干个字母,数字,下划线

注:C语言中对标识符大小写敏感

命名规则示例:DVD_nucDataGotFromDVD;

DVD 项目名

uc unsignedchar

DataGotFromDVD  获取路径

 

现代计算机可分为几个部件

1 中央处理器(CPU)

2 随机访问存储(RAM)

3 永久存储器(硬盘)

4各种外围设备(键盘,鼠标,监视器,等)

数据类型

[singed] int 2byte 16bit

Unsigned int 2byte 16bit

[singed] short 2byte 16bit

Unsigned short  2byte 16bit

Long  4byte  32bit

Float 4byte  32bit

Double 8byte  64bit

Long double 16byte 128bit

 

求count所占的字节

int count;

sizeof(count);

sizeof(int);

两种方法都可以

 

数据类型决定

1 占内存大小

2内存中的布局

3 数据的行为

 

浮点数之间的比较不可以用= =

Float f=0.0;

For(int i=1;i<=26;i++){ f+=0.1;}

If((f-2.6)>1e-6&&(f-2.6)<1e-6)//比较与2.6的大小  float精度为小数点后6~7位

 

转义字符

n---回车换行

a---警报

b---退格

r---回车不换行,当前位置移到本行行首

\---反斜杠

’---单引号

”---双引号

ddd ---八进制值(d表示一个八进制数字)

如101 表示10进制的65

xhh ---十六进制值(h表示一个十六进制数字)

 

使用宏常量的好处:

1.         -增加程序可读性;

2.         -减少书写错误;

3.         -便于维护;

 

 

宏常量举例

#define PRICE 30

void main( )

{

int num, total;

num=10;

total=num * PRICE;

printf("total=%d",total);

}

使用const而不是宏来定义常量的好处:

1、const定义的常量编译器可以对其进行数据类型安全检查,而#define宏定义的常量却只是进行简单的字符替换,且有时还会产生边际效应(不如你愿)。

所谓边际效应举例如下: #define N 100 #define M 200 + N 当程序中使用 M*N 时,原本想要 100 * ( 200+ N )的却变成了 100 * 200 + N。

2、有些调试程序可对const进行调试,但不对#define进行调试。

3、当定义局部常量时,const作用域仅限于定义局部常量的函数体内。但用#define时其作用域不仅限于定义局部常量的函数体内,而是从定义点到整个程序的结束点。

 

使用枚举常量:

注:

枚举常量一定是整形量

枚举常量不能取地址

枚举常量举例

int main( )

{

enum solution {a,b,c,d};//枚举常量enum solution item= b;

printf("%d",item);

}

 

int a = 10;//定义的同时初始化

int a;//定义未初始化

a = 10;//赋值

 

重点:

变量的初值问题:

#include

int i;

void main( )

{

static int j;

int k;

printf("%d,%d,%d.n",i, j, k);

}

全局变量、静态变量系统默认分配初值,局部变量系统不会分配初值。当变量定义没进行初始化时,

全局变量、静态变量系统默认分配初值,

局部变量系统不会分配初值。

 

变量运算中的隐式类型转换

什么情况下发生?

              运算转换:不同类型数据混合运算时。规则:不同类型数据运算时先自动转换成同一类型。规则是由低到高、简单到复杂。

              赋值转换:把一个值赋给与其类型不同的变量时。右服从左。float f = 1.0;int* p = malloc(sizeof(int));

              函数调用:实参与形参类型不一致时转换,实参服从形参。

              函数返回:服从返回值。

               

变量的定义和声明

变量声明:告诉编译器变量的类型、存储类型,不分配存储空间。 extern int i;

变量定义:告诉编译器在此处分配存储空间创建变量。

int i= 1;

同一变量定义只能一次,但是可以声明多次。

 

结构体概念:多个的数据组合成的一个整体,它是一种构造数据类型。

结构体类型与结构体变量是不同概念。类型:不分配内存,不可参与运算。

结构体变量:分配内存,可以参与运算

 

特点:

可以对结构体变量整体初始化;

可以将一个结构体变量整体赋值给另一个结构体变量。

可以对整个结构体变量或各成员取地址;

不可以在定义结构体类型时让成员带有初值

不可以判断两个结构体变量是否相等

 

指针变量与0值比较(指针非空比较)

尽管NULL的值与0相同,但是两者意义不同。假设指针变量的名字为p,它与零值比较的if语句如下:

if (NULL == p) 或if (p != NULL) // p与NULL显式比较,强调p是指针变量

不要写成:

if (p == 0)

if (p != 0) // 容易让人误解p是整型变量

 

结构体变量赋值的三个方法

#include

#include

struct Student{

       int score;

       char name[20];

       }stu1,stu2,stu3;

//stu1={98,"zhangsan"},stu2={89,"lisi"},stu3={96,"wangwu"};

 

void main(){

       float avg_score;

       struct Student * pstu1=&stu1;

       struct Student * pstu2=&stu2;

       pstu1->score=98;

       strcpy(pstu1->name,"zhangsan");

       (*pstu2).score=89;

       strcpy((*pstu2).name,"lisi");

       stu3.score=96;

       strcpy(stu3.name,"wangwu");

       avg_score=(float)(stu1.score+stu2.score+stu3.score)/3;

       printf("%fn",avg_score);

       printf("%s%dn",stu1.name,stu1.score);

       printf("%s%dn",stu2.name,stu2.score);

       printf("%s%dn",stu3.name,stu3.score);

}

这是实习第一天所讲的课程,╮(╯▽╰)╭  有点多但讲的很实用第一天的话给自己打70分  加油加油加油

 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭