c语言读书笔记.docx

上传人:b****3 文档编号:5444185 上传时间:2022-12-16 格式:DOCX 页数:16 大小:30.62KB
下载 相关 举报
c语言读书笔记.docx_第1页
第1页 / 共16页
c语言读书笔记.docx_第2页
第2页 / 共16页
c语言读书笔记.docx_第3页
第3页 / 共16页
c语言读书笔记.docx_第4页
第4页 / 共16页
c语言读书笔记.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

c语言读书笔记.docx

《c语言读书笔记.docx》由会员分享,可在线阅读,更多相关《c语言读书笔记.docx(16页珍藏版)》请在冰豆网上搜索。

c语言读书笔记.docx

c语言读书笔记

c语言读书笔记

【篇一:

c语言读书笔记】

第一章概述

1.c语言的特点

①语言简洁、紧凑,使用方便、灵活。

共有32个关键字,9种控制语句。

②运算符丰富,公有34种运算符。

③数据结构丰富,数据类型有:

整型、实型、字符型、数组、指针、结构体、共用体等。

④具有结构化的控制语句(如if…else、while、do…while、switch、for)

⑤语法限制不太严格,程序设计自由度大。

⑥允许直接访问物理地址,能进行位(bit)操作,可以直接对硬件操作。

⑦生成目标代码质量高,程序执行效率高。

⑧可移植性好。

2.c语言的用途

c虽不擅长科学计算和管理领域,但对操作系统和系统实用程序以及对硬件进行操作方面,c有明显的优势。

现在很多大型应用软件也用C编写。

第二章数据类型、运算符与表达式

1.c的数据类型

c的数据类型包括:

整型、字符型、实型或浮点型(单精度和双精度)、枚举类型、数组类型、结构体类型、共用体类型、指针类型和空类型。

2.常量与变量

常量其值不可改变,符号常量名通常用大写。

变量其值可以改变,变量名只能由字母、数字和下划线组成,且第一个字符必须为字母或下划线。

否则为不合法的变量名。

变量在编译时为其分配相应存储单元。

3.整型数据

整型常量的表示方法:

十进制不用说了,八进制以0开头,如0123,十六进制以0x开头,如0x1e。

整型变量分为:

基本型(int)、短整型(shortint)、长整型(longint)和无符号型。

不同机器上各类数据所占内存字节数不同,一般int型为2个字节,long型为4个字节。

4.实型数据

实型变量分为单精度(float)和双精度(double)两类。

在一般系统中float型占4字节,7位有效数字,double型占8字节,15~16位有效数字。

5.字符型数据

字符变量用单引号括起来,如a,b等。

还有一些是特殊的字符常量,如,等。

分别代表换行和横向跳格。

字符变量以char来定义,一个变量只能存放一个字符常量。

字符串常量是由双引号括起来的字符序列。

这里一定要注意a和a的不同,前者为字符常量,后者为字符串常量,c规定:

每个字符串的结尾加一个结束标志,实际上a包含两个字符:

a和。

6.数值型数据间的混合运算

整型、字符型、实型数据间可以混合运算,运算时不同类型数据要转换成同一类型再运算,转换规则:

char,short-int-unsigned-long-double-float

7.运算符和表达式

c运算符包括:

算数运算符(+-*/%)

关系运算符(====!

=)

逻辑运算符(!

||)

位运算符(~|^)

赋值运算符(=)

条件运算符(?

:

逗号运算符(,)

指针运算符(*)

求字节数(sizeof)

强制类型转换(类型)

分量运算符(.-)

下标运算符([])

其它运算符(如函数调用运算符())

自增自减运算符(++--)注意:

++i和i++的不同之处,++i使用i之前先使i加1,i++使用i之后,使i加1。

逗号表达式的求解过程:

先求解表达式1,再求解表达式2,整个表达式的值是表达式2的值。

第三章最简单的c程序设计

1.c的9种控制语句:

if()~else~

for()~

while()~

do~while()

continue

break

switch

goto

return

程序的三种基本结构:

顺序结构,选择结构,循环结构

2.数据输出

c语言不提供输入输出语句,输入输出操作是由c的库函数完成。

但要包含头文件stdio.h。

putchar()向终端输出一个字符

printf()的格式字符:

①d格式符用来输出十进制整数

%d按整型数据的实际长度输出

%md使输出长度为m,如果数据长度小于m,则左补空格,如果大于m,则输出实际长度%ld输出长整型数据

②o格式符以八进制形式输出整数

③x格式符以十六进制形式输出整数

④u格式符用来输出unsigned型数据,以十进制形式输出

⑤c格式符用来输出一个字符

⑥s格式符输出一个字符串

%s输出实际长度字符串

%ms输出的串占m列,如果串长度小于m,左补空格,如果大于m,实际输出%-ms输出的串占m列,如果串长度小于m,右补空格,

%m.ns输出占m列,但只取字符串中左端n个字符并靠右对齐

%-m.nsm、n含义同上,靠左对齐,如果nm,则m自动取n值

【篇二:

c语言学习笔记(必看知识点)】

c学习笔记

--必看知识点100例(上)

--editedbylvlvfromnov.8,2013tomar.31,2014

1.define和ifndef的用法

答:

取消宏定义undef

条件编译预处理:

#ifndef标识符

#define标识符

程序段1

#else

程序段2

#endif

它的作用是当“标识符没有由#define定义过。

则编译“程序段1”。

否则编译“程序段2”。

注意:

条件编译的作用是防止此头文件被多个文件调用,产生编译冲突,这里的表示符为当前头文件名的大写前加上_,如果头文件名为err.h,则标示符为_err_h.

2.extern关键字的用法。

extern可以置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。

另外,extern也可用来进行链接指定。

3.sizeof的结果等于对象或者类型所占的内存字节数。

4.snprintf()函数的用法。

答:

函数原型intsnprintf(char*str,size_tsize,constchar*format,...);功能将可变个参数(...)按照format格式化成字符串,然后将其复制到str中。

返回欲写入的字符串长度,若出错则返回负值。

5.volatile(不稳定的,易变的)关键字

答:

volatilei=10;

k=i;

volatile告诉编译器i是随时可能发生变化的,每次使用它的时候必须从i的地址中读取,因而编译器生成的可执行码会重新从i的地址读取数据放在k中。

6.strtok函数的用法。

答:

函数原型char*strtok(chars[],constchar*delim);

例如:

strtok(abc,def,ghi,,),最后可以分割成为abcdefghi.尤其在点分十进制的ip中提取应用较多。

7.mic?

答:

英特尔集成众核(intelmanyintegratedcore,mic)架构是英特尔公司现有产品(包括英特尔至强处理器在内)的另一个关键补充。

这种架构能在一颗芯片里面支持200多个线程同时工作。

mic众核协处理器knightcorner,和之前上代larrabee继承者knightsferry不同的是,新的knightscorner从外表上看是采用与xeon类似的lga/bga封装。

从这点来看,集成50个x86核心,运算能力达到1tflops的knightscorner可能会放弃“加速卡”的形式,采用qpi总线替代pci-e界面。

7.c语言中函数指针变量的详细介绍

答:

函数指针变量的作用:

指向函数入口地址,用来调用函数。

使用函数指针的好处在于,可以将实现同一功能的多个模块统一起来标识,这样一来更容易后期的维护,系统结构更加清晰。

或者归纳为:

便于分层设计、利于系统抽象、降低耦合度以及使接口与实现分开。

函数指针变量定义的一般形式为:

类型说明符(*指针变量名)();

其中类型说明符表示被指函数的返回值的类型。

(*指针变量名)表示*后面的变量是定义的指针变量。

最后的空括号表示指针变量所指的是一个函数。

例如申明函数指针变量:

int(*pf)()或者char*(*pf)();

后者表示pf是一个指向函数入口的指针变量,该函数的返回值(函数值)是指针型,指向字符串。

使用方法:

intmax(intx,inty)

pf=函数名;

(*pf)(intx,inty);

8.conio.h头文件的说明

答:

conio.h不是c标准库中的头文件,在cstandardlibrary,isoc和posix标准中均没有定义。

conio是consoleinput/output(控制台输入输出)的简写,其中定义了通过控制台进行数据输入和数据输出的函数,主要是一些用户通过按键盘产生的对应操作,比如getch()函数等等。

大部分dos,windows3.x,pharlap,dosx,os/2orwin32平台上的c编译器提供此文件,unix和linux平台的c编译器通常不包含此头文件。

如果需要使用此头文件,可以从互联网下载。

conio库不仅适用于windows平台,在linux下也可使用.网上已经有兼容包,下载后打开就可使用;而至于mac则完全跟windows没有区别,直接可以使用.

9.++i和i++的效率的比较。

答:

简单的比较前缀自增运算符和后缀自增运算符的效率是片面的,因为存在很多因素影响这个问题的答案。

以现在的编译器的优化水平,

在内建数据类型的情况下,效率没有区别。

在自定义数据类型的情况下,++i的效率较高。

10.c语言中near和far关键字的作用?

答:

far是和near对应的,就是一般程序的函数调用都在64k地址范围内的,就是16位寻址就够了,但是当代码比较庞大时,16位就可能不够了.far就代表32位寻址,函数的本质就是个地址,指针的本质也是个地址,所以就有了寻址的问题。

11.头文件中stdlib.h内容。

答:

stdlib.h里面定义了五种类型、一些宏和通用工具函数。

类型例如size_t、wchar_t、div_t、ldiv_t和lldiv_t;宏例如exit_failure、exit_success、rand_max和mb_cur_max等等;常用的函数如malloc()、calloc()、realloc()、free()、system()、atoi()、atol()、rand()、srand()、exit()等等。

12.#define只有宏名定义是什么意思!

答:

一般来说这样空的宏都是为了某些手段的,例如跨平台,比如说在windows下我让a赋值为10,在linux下要让a赋值为20,那么就可以这么写

#ifdefwindows

a=10;

#endif

#ifdeflinux

a=20;

#endif;

这样我只要在某个地方定义一个#definewindows或者#definelinux就可以在跨平台的情况下采取不同的策略了.

#undef是在后面取消以前定义的宏定义

18.extern“c”修饰符的理解!

答:

被externc修饰的变量和函数是按照c语言方式编译和连接的;

19.c++中增加函数重载的功能的内部原理!

答:

c语言是不支持函数重载功能的,

voidfoo(intx,inty);

该函数被c编译器编译后在符号库中的名字为_foo,而c++编译器则会产生像_foo_int_int之类的名字(不同的编译器可能生成的名字不同,但是都采用了相同的机制,生成的新名字称为“mangledname”)。

_foo_int_int这样的名字包含了函数名、函数参数数量及类型信息,c++就是靠这种机制来实现函数重载的。

20.理解c、c++和c#中变量生存期的区别!

答:

应该从作用域的角度来区分变量的生存周期,生存周期分为三种:

整个程序:

修饰的关键字有static

当前文件(.c、.cpp、.cs文件):

修饰的关键字有:

c语言:

auto(自动变量),c++语言:

private、protected、public等,c#中:

private、protected、public、partial等。

当前程序段(if语句段、函数体等):

修饰的关键字有:

同当前文件

注:

函数体外定义静态变量为全局静态变量,函数体内定义静态变量为局部静态变量,二者生存周期都是整个程序。

且c语言中没有私有和公有之分,c++扩充了这一个功能。

21.引用和指针的区别?

答:

1.从内存上来讲系统为指针分配内存空间,而引用与绑定的对象共享内存空间,系统不为引用变量分配内容空间。

2指针初始化以后可以改变指向的对象,而引用定义的时候必须要初始化,且初始化以后不允许再重新绑定对象。

3.所以引用访问对象是直接访问。

指针访问对象是间接访问。

4。

如果pa是指针,那么*pa就是引用了。

又如inta,ra=a;那么ra就是a的reference了。

22.c语言中头文件、库文件和.c文件的联系与区别。

答:

h头文件是编译时必须的,lib是链接时需要的,dll是运行时需要的。

附加依赖项的是.lib不是.dll,若生成了dll,则肯定也生成lib文件。

如果要完成源代码的编译和链接,有头文件和lib就够了。

如果也使动态连接的程序运行起来,有dll就够了。

在开发和调试阶段,当然最好都有。

23.c语言中编译链接的过程!

答:

obj文件是目标文件,一般是程序编译后的二进制文件,在通过链接器和资源文件链接就成exe文件了。

obj只给出了程序的相对地址,而exe是绝对地址。

obj文件不支持有孔的多边形面。

24.常见字符编码有:

ascii编码(americanstandardcodeforinformationinterchange)基本的ascii字符集共有128个字符,包括常用的字母、数字、标点符号等,一个字节来存放一个ascii字符。

big-5码:

是通行于台湾、香港地区的一个繁体字编码方案,俗称“大五码”。

gb2312编码:

对ascii编码的扩充,收录简体中文和常用字符,通用于中国大陆。

每个汉字占用两个字节。

基本集共收入汉字6763个和非汉字图形字符682个。

对于人名、古汉语等方面出现的罕用字,gb2312不能处理,这导致了后来gbk及gb18030汉字字符集的出现。

gbk编码:

对gb2312的扩充,收录了繁体中文,简、繁体字融于一库,每个汉字占用两个字节。

unicode编码:

注意,unicode只是一个编码规范,目前实际实现的unicode编码只要有三种:

utf-8,ucs-2和utf-16。

unicode当然是一个很大的集合,现在的规模可以容纳100多万个符号。

unicode固然统一了编码方式,但是它的效率不高,比如ucs-4(unicode的标准之一)规定用4个字节存储一个符号,那么每个英文字母前都必然有三个字节是0,这对存储和传输来说都很耗资源。

utf-8编码:

utf-8是一种8位的unicode字符集,编码长度是可变的,并且是ascii字符集的严格超集,也就是说ascii中每个字符的编码在utf-8中是完全一样的。

utf-8字符集中,一个字符可能是1个字节,2个字节,3个字节或者4个字节长。

一般来说,欧洲的字母字符长度为1到2个字节,而亚洲的大部分字符则是3个字节,附加字符为4个字节长。

ucs-2编码:

ucs-2是固定长度为16位的unicode字符集。

每个字符都是2个字节,ucs-2只支持unicode3.0,所以不支持附加字符。

ucs-2的优点:

对于亚洲字符的存储空间需求比utf-8少,因为每个字符都是2个字节。

处理字符的速度比utf-8更快,因为是固定长度编码的。

对于windows和java的支持更好。

utf-16编码:

utf-16也是一种16位编码的字符集。

实际上,utf-16就是ucs-2加上附加字符的支持,也就是符合unicode4.0规范的ucs-2。

所以utf-16是ucs-2的严格超集。

utf-16中的字符,要么是2个字节,要么是4个字节表示的。

utf-16主要在windows2000以上版本使用。

utf-16相对utf-8的优点,和ucs-2是一致的。

总结:

在亚洲进行在web开发时,面向的是全球,使用utf-8编码是绝对没有错的,面向亚洲的话,使用ucs-2和utf编码效率会更高。

综上所述,使用utf-8编码绝对没有错,不会出现编码乱码的现象。

25.sqlsever中char、varchar、nchar和nvarchar的对比区别!

答:

ncahr和nvarchar采用unicode编码,固定每个字符占用两个字节,char和varchar固定每个字符采用一个字节。

所以一般来说,如果含有中文字符,用nchar/nvarchar,如果纯英文和数字,用char/varchar我把他们的区别概括成:

char,nchar定长,速度快,占空间大,需处理

varchar,nvarchar,text不定长,空间小,速度慢,无需处理。

注意:

操作系统的语言环境支持中文可以使用char和varchar,如果操作系统环境不支持中文,必须使用nvarchar和ncahr。

请协调好存储代价和兼容性之间的关系。

26.md5利用salt进行加密的过程程?

用户输入【账号】和【密码】(以及其他用户信息);

系统为用户生成【salt值】;

系统将【salt值】和【用户密码】连接到一起;

对连接后的值进行散列,得到【hash值】;

将【hash值1】和【salt值】分别放到数据库中。

用户登录时,

用户输入【账号】和【密码】;

系统通过用户名找到与之对应的【hash值】和【salt值】;

系统将【salt值】和【用户输入的密码】连接到一起;

对连接后的值进行散列,得到【hash值2】(注意是即时运算出来的值);

比较【hash值1】和【hash值2】是否相等,相等则表示密码正确,否则表示密码错误。

有时候,为了减轻开发压力,程序员会统一使用一个salt值(储存在某个地方),而不是每个用户都生成私有的salt值。

27.md5简介!

【篇三:

c语言读书笔记】

第一章概述+s8j+t(qc#zc

1.c语言的特点%b9j1p0l$^#t/}5c1d

①语言简洁、紧凑,使用方便、灵活。

共有32个关键字,9种控制语句。

②运算符丰富,公有34种运算符。

③数据结构丰富,数据类型有:

整型、实型、字符型、数组、指针、结构体、共用体等。

④具有结构化的控制语句(如if…else、while、do…while、switch、for)

⑤语法限制不太严格,程序设计自由度大。

.t-o,p1i-j!

hx:

px1t

⑥允许直接访问物理地址,能进行位(bit)操作,可以直接对硬件操作。

⑦生成目标代码质量高,程序执行效率高。

;{c/s!

(t

⑧可移植性好。

2.c语言的用途(w#k(^9j-b,i

c虽不擅长科学计算和管理领域,但对操作系统和系统实用程序以及对硬件进行操作方面,c有明显的优势。

现在很多大型应用软件也用C编写。

9g2?

21s3d

第二章数据类型、运算符与表达式

1.c的数据类型

c的数据类型包括:

整型、字符型、实型或浮点型(单精度和双精度)、枚举类型、数组类型、结构体类型、共用体类型、指针类型和空类型。

e*a!

r+d:

w%b7j

2.常量与变量

常量其值不可改变,符号常量名通常用大写。

变量其值可以改变,变量名只能由字母、数字和下划线组成,且第一个字符必须为字母或下划线。

否则为不合法的变量名。

变量在编译时为其分配相应存储单元。

0`s8k9u/o@

3.整型数据

整型常量的表示方法:

十进制不用说了,八进制以0开头,如0123,十六进制以0x开头,如0x1e。

整型变量分为:

基本型(int)、短整型(shortint)、长整型(longint)和无符号型。

不同机器上各类数据所占内存字节数不同,一般int型为2个字节,long型为4个字节。

%{8_f!

a8~6o3l

4.实型数据

实型变量分为单精度(float)和双精度(double)两类。

在一般系统中float型占4字节,7位有效数字,double型占8字节,15~16位有效数字。

5.字符型数据o,g(g7b7@/r(m*a

字符变量用单引号括起来,如a,b等。

还有一些是特殊的字符常量,如,等。

分别代表换行和横向跳格。

2e-x+y5{u6vu%f8l/x)a

字符变量以char来定义,一个变量只能存放一个字符常量。

字符串常量是由双引号括起来的字符序列。

这里一定要注意a和a的不同,前者为字符常量,后者为字符串常量,c规定:

每个字符串的结尾加一个结束标志,实际上a包含两个字符:

a和。

5d4r4g7z(w(g6b-ka

6.数值型数据间的混合运算5a:

n/{/df0`(h

整型、字符型、实型数据间可以混合运算,运算时不同类型数据要转换成同一类型再运算,转换规则:

char,short-int-unsigned-long-double-float3x-w2y6xq6k-m3b

7.运算符和表达式7l.i+`6n3c(b.n4z

c运算符包括:

算数运算符(+-*/%)#h8{(sc6n*l$t`#t;r

关系运算符(====!

=))`([a)k/x%m,a6b

逻辑运算符(!

||)

位运算符(~|^)4a:

x#q:

d;u*v

赋值运算符(=)

条件运算符(?

:

);o5e:

j2x5w1y;y3s9y5|5l

逗号运算符(,)

指针运算符(*)

求字节数(sizeof)

强制类型转换(类型)#ro5p!

t;gq1ng

分量运算符(.-)a/y2h(o#n)q!

*p

下标运算符([])

其它运算符(如函数调用运算符())1p/@/b.f,m,qb,r

自增自减运算符(++--)注意:

++i和i++的不同之处,++i使用i之前先使i加1,i++使用i之后,使i加1。

逗号表达式的求解过程:

先求解表达式1,再求解表达式2,整个表达式的值是表达式2的值。

+v!

k}:

r-a$e)x7i

1if-[e5{,u

第三章最简单的c程序设计

1.c的9种控制语句:

7f6p9_$k:

f9e#o0h9t%n5a

if()~else~

for()~5-w4q8g*l)h7b

while()

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

当前位置:首页 > 法律文书 > 调解书

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

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