第三次作业
一、视频笔记
二、代码列表
三、问题
1、EOF是什么?怎么用?
C语言中,EOF常被作为文件结束的标志。还有很多文件处理函数处错误后的返回值也是EOF,因此常被用来判断调用一个函数是否成功。在C语言中,或更精确地说成C标准函数库中表示文件结束符(end of file)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。ASCII代码值的范围是0~127,不可能出现-1,因此可以用EOF作为文件结束标志。
2、char *a[]与char a[][10]有什么区别?
char *a[10] 表示一个数组,相当于 (char *) a [10],表示为a是一个数组,大小为10,这个数组的类型是 char *的,即这个数组的类型是指针。
char a[][10] 表示一个指针,相当于 char (* a) [10],表示为这个指针指向了一个数组,被指向的这个数组的类型是char型的,大小为10。
3、C99是什么?
是C语言官方标准第二版。
PTA:
4、
我认为是错的,感觉前者有空格,而后者没有空格,所以不相等。
5、字符数组与字符指针有什么区别?
答:字符数组定义的字符串在数据区,而字符指针定义的字符串在代码区。代码区:整个运行过程不可改变。数据区:高地址,可改变。
例:char s2[]="array"; s2[0]='A'; printf("s2:%s\n",s2); 运行结果:s2:Array
char *sp="array"; sp="Array"; 改变指针的指向才可以。
sp指向的字符不可改变,而sa中的字符可改变。
sp可指向别的字符串,sa是数组首元素地址,是常量,无法指向指针。
6、字符串常量:实质是一个指向该字符串首字符的指针常量。
7、scanf()与gets()有什么区别?printf()和puts()呢?
答:scanf()遇回车或空格输入结束,并自动将输入的数据和字符串结束符‘\0’送入数组中。gets()函数从输入得到一个字符串,遇回车输入结束。采用函数gets()输入的字符串允许带空格。 printf()输出遇到‘\0’结束。puts()输出时遇‘\0’自动将其转换为‘|n’,输出字符串后换行。
8、#define是什么,怎么用?
答:#define是宏名标识符:编译时,把程序中所有与宏名相同的字符串,用宏定义字符串替代。例如:#define PI3.14中将后面出现的所有PI替换成3.14.
注意:a.宏名一般用大写字母,以与变量名区别。
b.宏定义不是C语句,后面不加分号。
c.宏定义可以嵌套使用。