您的位置:首页 > 编程语言 > C语言/C++

C Primer Plus 学习笔记

2015-08-22 14:28 344 查看
1、C语言变量命名可供使用的字符包括大写字母、小写字母、数字和下划线(_),第一个字符必须是字母或者下划线。且不能够使用C语言中的关键字。

关键字包括以下:

1 数据类型关键字(12个):

(1) char :声明字符型变量或函数

(2) double :声明双精度变量或函数

(3) enum :声明枚举类型

(4) float:声明浮点型变量或函数

(5) int: 声明整型变量或函数

(6) long :声明长整型变量或函数

(7) short :声明短整型变量或函数

(8) signed:声明有符号类型变量或函数

(9) struct:声明结构体变量或函数

(10) union:声明共用体(联合)数据类型

(11) unsigned:声明无符号类型变量或函数

(12) void :声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用)

2控制语句关键字(12个):

A循环语句

(1) for:一种循环语句(可意会不可言传)

(2) do :循环语句的循环体

(3) while :循环语句的循环条件

(4) break:跳出当前循环

(5) continue:结束当前循环,开始下一轮循环

B条件语句

(1)if: 条件语句

(2)else :条件语句否定分支(与 if 连用)

(3)goto:无条件跳转语句

C开关语句

(1)switch :用于开关语句

(2)case:开关语句分支

(3)default:开关语句中的“其他”分支

D返回语句

return :子程序返回语句(可以带参数,也看不带参数)

3 存储类型关键字(4个)

(1)auto :声明自动变量 一般不使用

(2)extern:声明变量是在其他文件正声明(也可以看做是引用变量)

(3)register:声明积存器变量

(4)static :声明静态变量

4 其它关键字(4个):

(1)const :声明只读变量

(2)sizeof:计算数据类型长度

(3)typedef:用以给数据类型取别名(当然还有其他作用

(4)volatile:说明变量在程序执行中可被隐含地改变

(5)_inline:说明内嵌函数

(6)restrict:estrict是c99标准引入的,它只可以用于限定和约束指针,并表明指针是访问一个数据对象的唯一且初始的方式.即它告诉编译器,所有修改该指针所指向内存中内容的操作都必须通过该指针来修改,而不能通过其它途径(其它变量或指针)来修改;

(7)_Bool:布尔型

(8)_Complex:复数

(9)_Imaginary:虚数

二、C语言中的9中控制语句

goto语句:无条件转向;

if语句:判断语句;

while循环语句;

do-while语句:先执行循环体,然后判断循环条件是否成立. 之后继续循环;

for语句:循环,可替代while语句; 只是用法不同;

break语句跳出本层的循环;(只跳出包含此语句的循环)

continue语句:继续(一般放到循环语句里,不在执行它下面的语句,直接跳到判断语句例:for语句,就直接跳到第二个分号处,while语句,就直接跳到while()的括号里;

switch语句:多相选择;

return语句:返回;

备注:操作系统和C库通常都是以一个或两个下划线开始命名,因此最好不要使用这种方法,以免出现标识符冲突。

2、不同类型数值的显示:八进制:%o,十六进制:%x, %X;十进制%d;如果要显示前缀,则分别使用%#o,%#x, %#X生成0,0x,0X前缀。打印unsigned int类型使用%u,打印long型使用%ld;%o,%x也可以使用l做前缀。注意:C中常量后缀可以使用大小写,但格式说明只能使用小写字母。

3、整数溢出:如果一个整数过大,超出了整数类型的范围,则它将溢出到起始点。

4、当需要把一个较小的整数看做long型对待时,可以使用l或者L作后缀。(最好使用L),例如5L,020L,会被当做4字节的Long型处理。对支持long long类型的系统可以使用ll或者LL作后缀。

double型和float浮点型具有相同的最小取值范围。可以通过f或者F使编译器把浮点常量当做浮点型。

5、浮点型的上溢和下溢???????????上溢时计算结果为一个很大的值时C语言将其显示为inf或者infinity。下溢时

6、使用%d显示float类型的值不会把该float值转换为近似的int值,同样使用%d也不会把该Int值转换为float类型输出。

7、刷新输出:printf()语句将输出传递给一个缓冲区(buffer),缓冲区的内容在以下情况被输出:(1)缓冲区已满;(2)遇到换行符(3)需要输入。在这三种情况下缓冲区内容被送到屏幕或者文件。

8、scanf开始读取输入以后,会在遇到第一个空格、制表符(tab)或者换行符时停止扫描,因此通常使用%s的scanf只会输入一个单词而非整句话。

9、strlen计算字符串长度大小不包括最后的’\0’字符,而sizeof计算某个具体量的大小时会吧‘\0’计算在内。且sizeof在计算某个类型大小时必须使用(),计算某个具体量时则可以省略。

10、C头文件limits.h和float.h分别提供了有关整形类型和浮点型类型大小限制的详细信息。如limits.h中定义了整型的最大和最小值:

define INT_MAX +32767

define INT_MIN -32768

11、C语言不支持把数组作为一个整体赋值,也不支持使用花括号括起来的列表形式进行赋值,但数组初始化化时除外。eg:

int a[5] = {1,2,3,4,5};//OK

int b[5];

b[5] = {6,7,8,9,0};//Error,花括号赋值仅限于初始化时

12、数组名以及&a[0]都代表数组首元素的地址,且都是常量。对数组而言,地址增加会增加到下一个元素的地址,而不是下一个字节。

13、如果字符串常量中间没有间隔或者间隔符是空隔时,C语言会将其串联起来。

如:char greeting[50] = “Hello, and”[空格]“how are”[空格]”you”;



char greeting[50] = “Hello, and how are you”;

相等。

14、C语言有三种链接形式:外部链接、内部链接、空链接。具有代码块和函数原型作用域的变量具有空连接,可以在多文件程序中使用的变量(全部变量)具有外部链接,仅限与一个文件程序使用的变量(静态全局变量,使用关键字static修饰的变量)具有内部链接。

15、C语言有两种存储时期,静态存储时期和自动存储时期。具有文件作用域的变量都是静态存储时期。静态内存大小编译时就会确定,静态数据在程序载入内存时就被加载到内存中,而自动变量及动态分配的内存在程序运行时分配存储空间和加载数据。

16、register来声明一个寄存器变量,寄存器变量存储在寄存器内,而非内存,因此无法获取寄存器变量的地址。

17、C语言有五种存储类别说明符:auto、register、extern、static、typedef;(typedef与内存存储无关,历史原因归于此类)。不可以在一个声明中使用两个以上的存储类别说明符。

18、类型限定词const:

(1)修饰指针及形式参数

const int *p;//,p指向一个整型常量, 即p指向的值不能够改变,但是p的值可以改变,及它可以指向不同位置的相同值。

int const *p//同const int *p;

int * const p;//定义了一个常量指针,p的值不能够改变,及它始终指向同一地址,但是它指向的值可以改变。

const int * const p;//p的值不能够改变,p指向的值也不能够改变。

const位于左边任意位置,将数据声明成常量;位于右边将指针修饰成常量。

19、类型限定词volatile:使用volatile修饰的变量告诉编译器该变量可能被其他程序(除本程序以外)修改,不要进行优化。一般用来修饰硬件地址和其他并行运行程序共享的数据。

一个值可以同时是volatile和const,不能被本程序改变,const属性,可以被其他程序以外的代理改变volatile。

20、类型限定词restrict:只可用于指针,指明指针是访问一个数据对象的唯一且初始的方式.即它告诉编译器,所有修改该指针所指向内存中内容的操作都必须通过该指针来修改,而不能通过其它途径(其它变量或指针)来修改。

21、利用宏参数创建字符串:#运算符。#用作预处理运算符,可以吧语言符号转化成字符串。如X是一个宏参数,则#X可以把参数名转换成字符串。该过程成为字符串化。eg:

<#include
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言