第三次作业
一,笔记
二,代码
三,问题
1,malloc的返回值为什么一定要强制类型转换?
答;Malloc向系统申请分配指定size个字节的内存空间。返回类型是 void* 类型。void* 表示未确定类型的指针。C,C++规定,void* 类型可以强制转换为任何其它类型的指针。
2,malloc如何控制申请空间的大小?
x=(struct node *) malloc(sizeof(struct node))
- sizeof(struct node)
就是求 struct node 这个结构体占用的字节数。 - malloc(sizeof(struct node))
申请 struct node 这个结构体占用字节数大小的空间 - (struct node *) malloc(sizeof(struct node))
将申请的空间的地址强制转化为 struct node * 指针类型 - x=(struct node *) malloc(sizeof(struct node))
将那个强制转化的地址赋值给 x
3,2-3
下面描述正确的是 (2分)
问;c 选项为什么错误?
答:因为字符串后还有空格。
以下不正确的赋值或赋初值的方式是( )。 (2分)
解惑;c项str为首地址 ,不可随意赋值。.
方法;老师讲解。
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.宏定义可以嵌套使用。