第4章:
1:C没有为字符串定义专门的变量类型,而是存储在char数组中。char数组每个元素占用1个字节,可以存放一个字符值。
若定义一个 char name[40]; 该数组有40个元素,元素下标从0开始。末尾第39个元素的值是\0,这个字符代表空字符,标记字符串的结束,是非打印字符。意味着一个40个元素的字符数组只能存储39个有效字符。空字符是隐式的,不需要人为添加。每个元素类型是char类型。
2:%s格式标识符用来打印字符串(字符数组也可称为字符串)。
3:scanf函数键入变量时,需要&变量指向该变量的地址。而char数组不需要。
scanf(“%d”,&num); //读取十进制数据存入num变量的地址
Scanf(“%s”,name); //读取字符串存入name字符数组。
可以看到,char name [40];的数组名name其实就是地址。
一个数组的数组名其指向的是数组第一个元素的首地址。
4:scanf函数用%s读取字符串时,不会读取空白字符空格,制表符,换行符。意味着输入 hello world后,name只会存储hello。
后续会用gets()函数处理一般的空格字符串。
5:字符串和字符的区别在于字符串属于派生类型(char数组),字符属于基本类型(char类型)。
字符串 “x” 等同于 x \0,占用2个字节,
字符 ‘x’等同于x, 占用1个字节。
6:strlen()函数以字符为单位给出字符串的长度。使用该函数需要用string.h头文件。语法用法和sizeof相同。注意,返回的是有效字符的个数。
7:常量的定义:#define 常量名(大写) 值
通常写在文件的顶部。
另一种写法是#define c_常量名(小写) 值 或
#define k_常量名(小写) 值。
8:#define语句也可以用于定义字符和字符串常量。
9:另一种定义是用const修饰符去定义常量。
语法: const 数据类型 变量名 = 值;
const的作用是修饰一个变量为只读,不可修改其值。该方法比#define更灵活。
10:头文件limits.h和float.h 定义了整数类型和浮点数类型的大小限制的详细信息,定义了每个类型的最大值和最小值常量。具体使用参考相关说明。
11:一些关于printf函数的格式说明符。
12:printf()的转换说明修饰符:
可以在%和定义转换字符之间通过插入修饰符对基本的转换说明加以修改。
13:printf()的标志
14:printf()函数的返回值有两种,如果输出正确,返回所打印的字符的数目,如果有输出错误,printf()会返回一个负数。
该功能多用于检查文件输入是否正确。
15:scanf()的转换说明符
16:scanf()的转换修饰符
17:scanf()的返回值也有两种。正确返回读入项目的个数,如果没有读取任何东西或者输入了非数字字符串,scanf()会返回0,当检测到EOF后,返回EOF。C设定EOF值为-1。EOF用来检测文件结尾。
18:printf()的*修饰符用来显示字段宽度。其作用可打印对其的列式输出。
scanf()的*修饰符可以跳过当前的键入。