初学C语言者宝贝笔记.docx

上传人:b****3 文档编号:4643415 上传时间:2022-12-07 格式:DOCX 页数:46 大小:37.92KB
下载 相关 举报
初学C语言者宝贝笔记.docx_第1页
第1页 / 共46页
初学C语言者宝贝笔记.docx_第2页
第2页 / 共46页
初学C语言者宝贝笔记.docx_第3页
第3页 / 共46页
初学C语言者宝贝笔记.docx_第4页
第4页 / 共46页
初学C语言者宝贝笔记.docx_第5页
第5页 / 共46页
点击查看更多>>
下载资源
资源描述

初学C语言者宝贝笔记.docx

《初学C语言者宝贝笔记.docx》由会员分享,可在线阅读,更多相关《初学C语言者宝贝笔记.docx(46页珍藏版)》请在冰豆网上搜索。

初学C语言者宝贝笔记.docx

初学C语言者宝贝笔记

C语言笔记整理

1、C语言常用语法提要

一、标示符

  可由字母、数字和下划线组成。

标示符必须以字母或下划线开头。

大、小写字母分别认为是两个不同的字符。

不同的系统对标示符的字符数由不同的规定,一般允许7个字符。

二、常量

 1、整型常量

  十进制常量

  八进制常量(以0开头的数字序列)

  十六进制常量(以0x或0X开头的数字序列)

  长整型常量(在数字后加字符l或L)

 2、字符常量

  用单引号(撇号)括起来的一个字符,可以使用转义字符。

 3、实型常量(浮点型常量)

  小数形式

  指数形式

 4、字符串常量

  用双引号括起来的字符序列。

三、表达式

 1、算术表达式

  整型表达式:

参加运算的运算量是整型量,结果也是整型量。

  实型表达式:

参加运算的运算量是实型量,运算过程先转换成double型,结果也是double型。

 2、逻辑表达式

  用逻辑运算符连接的整型量,结果为一个整数(0或1)。

逻辑表达式可以认为是整型表达式的一种特出形式。

 3、字位表达式

  用位运算符连接的整型量,结果为整数。

字位表达式也可以认为是整型表达式的一种特出形式。

 4、强制类型转换表达式

  用“(类型)”运算符使表达式的类型进行强制转换。

如(float)a。

 5、逗号表达式(顺序表达式)

  形式为:

  表达式1,表达式2,……表达式n;

  顺序求出表达式1,表达式2,……表达式n的值。

结果为表达式n的值。

 6、赋值表达式

  将赋值号“=”右侧表达式的值赋给赋值号左边的变量。

赋值表达式的值为执行赋值后被赋值的变量的值。

 7、条件表达式

  形式为:

  逻辑表达式?

表达式1:

表达式2

  逻辑表达式的值为非0,则条件表达式的值等于表达式1的值;

  逻辑表达式的值为0,则条件表达式的值等于表达式2的值。

 8、指针表达式

  对指针类型的数据进行运算。

例如:

p-2、p1-p2、&a等(其中p、p1、p2均已定义为指针变量),结果为指针类型。

  以上各种表达式可以包含有关的运算符,也可以不包含任何运算符的初等量(例如,常量是算术表达式的最简单的形式)。

四、数据定义

  对程序中用到的所有变量都需要定义。

对数据要定义其数据类型,需要是指定其存储类别。

 1、类型表示符可用

  int

  short

  long

  unsigned

  char

  float

  double

  struct结构体名

  union共用体名

  用typdef定义的类型名

  若省略数据类型,则按int处理。

  结构体与共用体的定义形式为:

  struct结构体名

   {成员表列};

  union共用体名

   {成员表列};

  用typdef定义的新类型名的形式为:

  typdef已有类型新定义类型

  如:

typdefintcount;

 2、存储类别可用

  auto

  static

  register

  extern

  如不指定存储类别,作auto处理。

  变量的定义形式为:

  存储类别数据类型变量表列

  注意外部数据定义只能用extern或static,而不能用auto或register。

五、函数定义

  形式为:

  存储类别数据类型函数名(形参表列)

   函数体

  函数的存储类别只能用extern或static。

函数体使用花括号括起来,可包括数据定义和语句。

  例如:

  staticintmax(intx,inty)

  {intz;

  z=x>y?

x:

y;

  return(z);

  };

六、变量的初始化

  可以在定义时对变量或数组指定初始值。

  静态变量或外不变量如未初始化,系统自动使其初值为0(对数值型变量)或空(对字符型数据)。

对自动变量或寄存器变量,如未初始化,则其初始值为一不可预测的数据。

七、语句

 1、表达式语句

 2、函数调用语句

 3、控制语句

 4、复合语句

 5、空语句

  其中控制语句包括

 1、if(表达式)语句

 或

 if(表达式)语句1

 else语句2

 2、while(表达式)语句

 3、do语句

 while(表达式)

 4、for(表达式1,表达式2,表达式3)语句

 5、switch(表达式)

 {case常量表达式1:

语句1;

 case常量表达式2:

语句2;

   .

   .

   .

 case常量表达式n:

语句n;

 default:

语句n+1

 };

 6、break

 7、continue

 8、return

 9、goto语句

八、预处理命令

  #define宏名字符串

  #define宏名(参数1,参数2,……参数n)字符串

  #undef宏名

  #include"文件名"或<文件名>

  #if常量表达式

  #ifdef宏名

  #ifndef宏名

  #else

  #endif

2、C语言关键字

Auto  自动变量

Break  跳出循环

Case  与Switch配套时用

Char  字符

Const

Continue结束循环

Default 与Switch配套时用

Do   循环

Double 双精度

Else  与if配对时用

Enum  枚举类型

Extern 声明外部变量

Float  单精度

For   循环

Goto  转向语句

If   条件语句

Int   整型

Long  长

Register寄存器变量

Return 返回

Short  短

Signed 符号

Sizeof 长度运算符

Static 静态局部变量

Struct 结构体

Switch 选择语句

Typedef 将老类型定义为新类型

Union  共用体

Unsigned无符号

Void  空

Volatile

While 循环

3、运算符和结合性

优先级

运算符

含义

要求运算对象的个数

结合方向

1

()

圆括号

 

自左至右

[]

下标运算符

->

指向结构体成员运算符

.

结构体成员运算符

2

!

逻辑非

单目运算符

自右至左

~

按位取反

++

自增

--

自减

-

负号

(类型)

类型转换

*

指针

&

地址

sizeof

长度

3

*

双目运算符

自左至右

/

%

求余

4

+

双目运算符

自左至右

-

5

<<

左移

双目运算符

自左至右

>>

右移

6

<,<=,>,>=

关系运算符

双目运算符

自左至右

7

==

等于

双目运算符

自左至右

!

=

不等于

8

&

按位与

双目运算符

自左至右

9

^

按位异或

双目运算符

自左至右

10

|

按位或

双目运算符

自左至右

11

&&

逻辑与

双目运算符

自左至右

12

||

逻辑或

双目运算符

自左至右

13

?

:

条件

三目运算符

自右至左

14

=,+=,-=*=,/=,%=>>=,<<=&=,^=,|=

赋值运算符

双目运算符

自右至左

15

逗号(顺序求值运算符)

 

自左至右

优先级

初等运算符((),[],->,.)

单目运算符

算术运算符(先乘除,后加减)

关系运算符

逻辑运算符(不含!

条件运算符

赋值运算符

逗号运算符

4.1、C库函数之数学函数

使用数学函数时,应该在该源文件中使用以下命令行:

#include或#include"math.h"

函数名

原型

功能

返回值

说明

abs

intabs(intx);

求整数x的绝对值

计算结果

 

acos

doubleacos(doublex);

计算cos-1(x)的值

计算结果

-1≤x≤1

asin

doubleasin(doublex);

计算sin-1(x)的值

计算结果

-1≤x≤1

atan

doubleatan(doublex);

计算tan-1(x)的值

计算结果

 

atan2

doubleatan2(doublex,doubley);

计算tan-1(x/y)的值

计算结果

 

cos

doublecos(doublex);

计算cos(x)的值

计算结果

x的单位为弧度

cosh

doublecosh(doublex);

计算x的双曲余弦函数cosh(x)的值

计算结果

 

exp

doubleexp(doublex);

求ex的值

计算结果

 

fabs

doublefabs(doublex);

求x的绝对值

计算结果

 

Floor

doublefloor(doublex);

求出不大于的x最大数

该整数的双精度实数

 

fmod

doublefmod(doublex,doubley);

求整除x/y的余数

返回余数的双精度实数

 

Frexp

doublefrexp(doublex,int*eptr);

把双精度数val分解为数字部分(尾数)x和以z为底的指数n

即val=x*zn,n存放在eptr指向的变量

返回数字部分x0.5≤x<1

 

log

doublelog(doublex);

求logex即lnx

计算结果

 

log10

doublelog10(doublex);

求log10x

计算结果

 

modf

doublemodf(doubleVal,double*iptr);

把双精度数val分解为整数部分和小数部分,把整数部分存放在iptr指向的单元

val的小数部分

 

pow

doublepow(doublex,doubley);

计算x4的值

计算结果

 

rand

intrand(void);

产生-90到32767间的随机整数

随机整数

 

sin

doublesin(doublex);

计算sin(x)的值

计算结果

x的单位为弧度

sinh

doublesinh(doublex);

计算x的双曲正弦函数sinh(x)的值

计算结果

 

sprt

doublesprt(doublex);

计算根号x

计算结果

x应>=0

tan

doubletan(doublex);

计算tan(x)的值

计算结果

x的单位为弧度

tanh

doubletanh(doublex);

计算x的双曲正切函数tanh(x)的值

计算结果

 

4.2、C库函数之字符函数和字符串函数

使用字符函数时,要包含头文件”ctype.h”

使用字符串函数时,要包含头文件”string.h”

函数名

原型

功能

返回值

Isalnum

intisalnum(intch);

检查ch是否是字母(alpha)或数字(numeric)

字母或数字返回1否则返回0

Isalpha

intisalpha(intch);

检查ch是否是字母

是返回1否返回0

iscntrl

intiscntrl(intch);

检查ch是否是控制字符(其ASCII码在0~0x1F之间)

是返回1否返回0

isdigit

intisdigit(intch);

检查ch是否数字(0~9)

是返回1否返回0

isgraph

intisgraph(intch);

检查ch是否是打印字符(其ASCII码在0x21~0x7F之间)不包括空格

是返回1否返回0

islower

intislower(intch);

检查ch是否小写字母

是返回1否返回0

isprint

intisprint(intch);

检查ch是否是打印字符(其ASCII码在0x20~0x7F之间)包括空格

是返回1否返回0

ispunct

intispunct(intch);

检查ch是否是标点字符(即除字母、数字、空格以外的所有可打印字符)

是返回1否返回0

isspace

intisspace(intch);

检查ch是否是空格、跳格符(制表符)或换行符

是返回1否返回0

isupper

intisupper(intch);

检查ch是否大写字母

是返回1否返回0

isxdigit

intisxdigit(intch);

检查ch是否一个16进制数字字符(0~9、a~f、A~F)

是返回1否返回0

strcat

char*strcat(char*str1,char*str2);

把字符串str1接到str2后面(str1后面的'\0'被取消)

返回str1

strchr

char*strchr(char*str,intch);str;

找出str指向的字符串中第一次出现字符ch的位置

返回指向该位置的指针,如找不到返回空指针

strcmp

char*strcmp(char*str1,char*str2);

比较两个字符串str1、str2

str1str2返回负数

strcpy

char*strcpy(char*str1,char*str2);

把str2指向的字符串拷贝到str1中去

返回str1

strlen

unsignedintstrlen(char*str);

统计str字符串中字符的个数(不包括终止符'\0')

返回字符串个数

strstr

char*strstr(char*str1,char*str2);

找出str2字符串在str1字符串中第一次出现的位置(不包括str2得串结束符)

返回指向该位置的指针,如找不到返回空指针

tolower

inttolower(intch);

ch字母转换为小写字母

与ch相应的小写字母

toupper

inttoupper(intch);

ch字母转换为大写字母

与ch相应的大写字母

4.3、C库函数之输入输出函数

要包含头文件”stdio.h”

函数名

原型

功能

返回值

说明

clearer

voidclearer(FILE*fp);

清除文件指针错误指示器

 

close

intclose(intfp);

关闭文件

成功返回0,否则返回-1

非ANSI标准函数

creat

intcreat(char*filename,intmode);

以mode所制定的方式建立文件

成功返回正数,否则返回-1

非ANSI标准函数

eof

inteof(intfp);

检查文件是否结束

文件结束返回1,否则返回0

非ANSI标准函数

fclose

intfclose(FILE*fp);

fp关闭所指的文件释放文件缓冲区

有错返回非0,否则返回0

 

feof

intfeof(FILE*fp);

检查文件是否结束

文件结束返回非0,否则返回0

 

fgetc

intfgetc(FILE*fp);

从fp所指定的文件中取得下一个字符

返回所得到的字符,出错返回EOF

 

fgets

intfgets(char*buf,intn,FILE*fp);

从fp所指向的文件读取一个长度为(n-1)的字符串,存入起始地址为buf的空间

返回地址buf,遇文件结束或出错返回NULL

 

fopen

FILE*fopen(char*filename,char*mode);

以mode指定的方式打开名为filename的文件

成功,返回一个文件指针(文件信息区的起始地址),否则返回0

 

fprint

intfprint(FILE*fp,char*format,args,…);

把args的值以format指定的格式输出到fp所制定的文件中

实际输出的字符数

 

fputc

intfputc(charch,FILE*fp);

将字符ch输出到fp指向的文件中

成功返回该字符,否则返回非0

 

fputs

intfputs(char*str,FILE*fp);

将str指向字符串输出到fp指向的文件中

返回0,出错返回非0

 

fread

intfread(char*pt,unsignedsize,unsignedn,FILE*fp);

从fp所指向的文件中读取长度为size的n个数据项,存到pt所指向的内存区

返回所读的数据项个数,遇文件结束或出返回0

 

fscanf

intfscanf(FILE*fp,charformat,args,…);

从fp所指向的文件中按format给定的格式输入的数据送到args所指向的内存单元(args是指针)

已输入的数据项个数

 

fseek

intfseek(FILE*fp,longoffset,intbase);

将fp所指向的文件的位置指针移到以base所指出的位置为基准、以offset为移量的位置

返回当前位置,否则返回-1

 

ftell

intftell(FILE*fp);

返回fp所指向的文件中读写位置的

返回fp所指向的文件中读写位置的

 

fwrite

intfwrite(charptr,unsignedsize,unsignedn,FILE*fp);

把ptr所指向的n*size个字节输出到fp所指向的文件

写到fp文件中的数据项个数

 

getc

intgetc(FILE*fp);

从fp所指定的文件中读出一个字符

返回所读的字符,出错返回EOF

 

getchar

intgetchar(void);

从标准输入设备读取下一个字符

返回所读的字符,出错返回-1

 

getw

intgetw(FILE*fp);

从fp所指定的文件读取一个字(整数)

输入的整数,出错返回-1

非ANSI标准函数

open

intopen(char*filename,intmode);

以mode指定的方式打开名为filename的文件

返回文件号(正数),出错返回-1

 

printf

intprintf(char*format,args,…);

按format指向的格式字符串所规定的格式,将输出表列args的值输出到标准输出设备

输出字符的个数,出错返回-1

format可以是一个字符串,或字符串数组的起始地址

putc

intputc(intch,FILE*fp);

将字符ch输出到fp指向的文件中

输出的字符ch,出错返回EOF

 

putchar

intputchar(charch);

将字符ch输出到标准输出设备

输出的字符ch,出错返回EOF

 

puts

intputs(chae*str);

将str所指向字符串输出到标准输出设备,将'\0'转换为回车换行

返回换行符,出错返回EOF

 

putw

intputw(intw,FILE*fp);

将一个整数(w)即一个字写到fp指向的文件中

输出的整数,出错返回EOF

非ANSI标准函数

read

intread(intfd,char*but,unsignedcount);

从文件号fd所指示的文件中读count个字节到but指示的缓冲区

返回真正读入的字节个数,文件结束返回0,出错返回-1

非ANSI标准函数

rename

intrename(char*oldname,char*newname);

指由oldname所指定的文件名改为由newname所指的文件名

成功返回0,出错返回-1

 

rewind

voidrewind(FILE*fp);

将fp指示的文件位置指针置于文件开头位置,并清除文件结束标志或出错标志

 

scanf

intscanf(charformat,args,…);

从标准输入设备按format指向的格式字符串所规定的格式,输入数据给args所指向的单元

读入并赋给args的数据个数,文件结束返回EOF,出错返回0

args为指针

write

intwrite(intfd,char*but,unsignedcount);

从but指示的缓冲区输入count个字符到fd所标志的文件

返回实际输出的字节数出错返回-1

非ANSI标准函数

4.4、C库函数之动态存储分配函数

函数名

原型

功能

返回值

calloc

void*calloc(unsignedn,unsignedsize);

分配几个数据项的内存连续空间,每个数据项的大小为size

分配内存单元的起始地址。

如不成功返回0

free

voidfree(void*p);

释放p所指的内存区

malloc

void*malloc(unsignedsize);

分配size字节的存储区

所分配的内存区地址,如内存不够返回0

realloc

void*realloc(void*p,unsignedsize);

将p所指的已分配内存区的大小该为size。

size可以比原来分配的空间大或小

返回指向该内存区的指针

说明:

①ANSI标准建议在“stdlib.h”头文件包含上述信息,但许多C编译要求用“malloc.h”头文件。

②ANSI标准要求动态分配系统返回void指针,但有些C编译提供的这类函数返回char指针。

无论哪一种,都要用强制类型转换方法把void或char指针转换成所需类型。

5、顺序程序设计

一、字符的输入输出

1、putchar函数(单字符输出函数)

一般形式为

putchar(c);

2、getchar函数(单字符输入函数)

一般形式为

getchar();

二、格式输入与输出

1、printf函数(格式输出函数)

一般形式为

printf(格式控制,输出表列)

说明:

⑴“格式控制”是用双引号括起来的字符串,包括格式说明和普通字符,“格式控制”由“%”和格式字符组成。

⑵“输出表列”是需要输出的一些数据,可以是表达式。

可写成下列格式

printf(参数1,参数2,参数3……参数n);

printf函数的功能是将参数2~参数n按参数1给定的格式输出。

格式字符:

d,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 材料科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1