第三次作业

一,笔记

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 二,代码

 

 

 

三,问题

 

1,malloc的返回值为什么一定要强制类型转换?

答;Malloc向系统申请分配指定size个字节的内存空间。返回类型是 void* 类型。void* 表示未确定类型的指针。C,C++规定,void* 类型可以强制转换为任何其它类型的指针。

 

2,malloc如何控制申请空间的大小?

x=(struct node *) malloc(sizeof(struct node))

  1. sizeof(struct node)
    就是求 struct node 这个结构体占用的字节数。
  2. malloc(sizeof(struct node))
    申请 struct node 这个结构体占用字节数大小的空间
  3. (struct node *) malloc(sizeof(struct node))
    将申请的空间的地址强制转化为 struct node * 指针类型
  4. 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.宏定义可以嵌套使用。

 

posted @ 2020-03-13 10:16  计科19-2关世雄  阅读(401)  评论(2编辑  收藏  举报