C primer plus 第四章总结
来源:互联网 发布:舰娘国服 知乎 编辑:程序博客网 时间:2024/05/16 08:49
一、字符串
1. 字符串就是一个或者多个字符的序列.如“I love you!” ,双引号不是字符串的一部分,他们只是通知编译器其中包含了一个字符串,正如单引号标识这一个字符一样.
2.C没有为字符串定义专门的变量类型,而是把它存储在char 数组中.字符串存储在数组中1时,需要用空字符 \0 来标记字符串结束。空字符不是数字0,它是非打印字符,其ASCII码的值为0,该字符存在意味着数组的单元数必须至少要比存储的字符数多1 .
3.字符串和字符:字符串常量"x"和字符常量不同,其中一个区别是'x'属于派生类型(char数组),而'x'属于基本类型(char),第二个区别是"x"实际上由两个字符('x'和'\0')组成.
二、strlen()函数
strlen()函数以字符为单位给出字符串的长度。(sizeof运算符它是以字节为单位给出数据的大小).
三、常量和预处理
C提供了两种建立常量的方法,第一种是预处理,C预处理器允许定义常量。格式如:#define NAME value NAME是常量的符号名,value是常量值, 没有使用分号是因为这是一种替代机制,而不是C的语句。符号常量名必须满足变量的命名规则,可以使用大写和小写字母、数字和下划线字符,第一个字符不能是数字。
第二种是const修饰符,C中可以使用const关键字把一个变量声明转换成常量声明,如:
const int MONTHS =12; //MONTHS 是一个代表12的符号常量
这就使MONTHS成为一个只读值,也就是说,您可以显示MONTHS,并把它用于计算中,但是您不能改变MONTHS的值。这个新方法比使用#define更灵活.
const扩展:
const修饰符有以下优点:1.预编译指令只是対值进行简单的替换,不能进行类型检查
2.可以保护被修饰的 东西,防止被修改,增强程序的健壮性
3.编译器通常不为普通const常量分配存储空间,而是将他们保存在符号表中,这使它们成为一个编译期间的常量,没有了存储与读内存的操作,提高了 效率
以下自 http://blog.csdn.net/itxiebo/article/details/51206641# 转载
1、函数体内修饰局部变量。
例:
- 1
- 2
- 3
- 1
- 2
- 3
首先,我们先把const这个单词忽略不看,那么a是一个int类型的局部自动变量,我们给它赋予初始值0。
然后再看const.
const作为一个类型限定词,和int有相同的地位。
- 1
- 2
- 1
- 2
是等价的。于是此处我们一定要清晰的明白,const修饰的对象是谁,是a,和int没有关系。const 要求他所修饰的对象为常量,不可被改变,不可被赋值,不可作为左值(l-value)。
这样的写法也是错误的。
- 1
- 2
- 1
- 2
这是一个很常见的使用方式,如下:
- 1
- 1
在程序的后面如果企图对pi再次赋值或者修改就会出错。
然后看一个稍微复杂的例子。
- 1
- 1
还是先去掉const 修饰符号。
注意,下面两个是等价的。
- 1
- 2
- 1
- 2
其实我们想要说的是,*p是int类型。那么显然,p就是指向int的指针。
同理
- 1
- 1
其实等价于
- 1
- 2
- 1
- 2
即,*p是常量。也就是说,p指向的数据是常量。
于是
- 1
- 2
- 1
- 2
那么如何声明一个自身是常量指针呢?方法是让const尽可能的靠近p;
- 1
- 1
const右面只有p,显然,它修饰的是p,说明p不可被更改。然后把const去掉,可以看出p是一个指向 int形式变量的指针。
于是
- 1
- 2
- 1
- 2
再看一个更复杂的例子,它是上面二者的综合
- 1
- 1
说明p自己是常量,且p指向的变量也是常量。
于是
- 1
- 2
- 1
- 2
const 还有一个作用就是用于修饰常量静态字符串。
例如:
- 1
- 1
如果没有const,我们可能会在后面有意无意的写name[4]=’x’这样的语句,这样会导致对只读内存区域的赋值,然后程序会立刻异常终止。有了const,这个错误就能在程序被编译的时候就立即检查出来,这就是const的好处。让逻辑错误在编译期被发现。
const 还可以用来修饰数组
- 与上面有类似的作用。
五、printf()和scanf()
printf()和scanf()被称为输出/输入函数,简称I/O函数,
- C primer plus 第四章总结
- C++primer plus第四章
- C Primer plus 第四章
- C Primer Plus 第四章
- 《C Primer Plus》第四章编程题
- C++primer plus阅读笔记第四章
- C++primer Plus 第四章练习题
- 《C Primer Plus 》 第二章总结
- C primer plus 第三章总结
- C++ Primer Plus 第四章
- C++ Primer Plus 第四章
- C++primer plus(第四版)第五章习题参考
- 《c primer plus》编程练习回顾-第四章
- C primer plus(第五版)编程练习第四章
- c++primer plus 第六版第四章编程习题
- C Primer Plus 第四章 编程练习 1-7题
- C++Primer Plus(第六版) 第八章 第四题
- C Primer Plus(第6版)第四章答案
- FFMPEG学习【libavfilter】(一)
- 【Bzoj1303】中位数图
- servlet接收POST提交的中文传入数据库后乱码
- C#的zxing条码工具
- Linux 下 JDK + Eclipse + PyDev 安装与配置
- C primer plus 第四章总结
- 安卓应用升级、捕捉异常上报、运营统计
- 读
- 设计模式之适配器模式
- AT24CXX、DS1302、红外HS0038 20170610 周六
- 设计模式之迭代器模式
- 简单编码
- 对比get方法和post方法?
- 迷津叹 其二