预习第二章数据类型

问题

一:什么是强制类型转换?

转换变量对应的类型,但是变量的值不会因为变量类型的改变而发生改变,变量的值是变量所对应的内存区域内存放的二进制序列,内存区域的二进制序列以对应类型的形式翻译出来。


二、char *str="hello world";*str="goodby world";语句哪里有错误?

第一句话说明“hello world”是字符型常量,不能向常量里写数据,常量不能被赋值;*str代表了str字符串中的第一个字符,将字符串地址写入一个字符里需要用strcpy函数。


三、const int *p和int * const p的区别?

const修饰*p,去掉类型int,表示p所指向空间里的值不变;

const修饰p,去掉类型int *,表示指针变量p里的值不变,p不能再指向其他地址,但是p指向的空间里的值可以改变。


四、typedef有什么作用?

一是给变量起一个新的名字,二是简化一些比较复杂的类型申明。


五、为什么这一段程序有错误?

typedef struct tag_node

{

      char  *p_item;

      p_node p_next;

}*p_node;

本段程序给struct tag_node起一个新名字p_node,但类型还没有建立完成,在新名字还没有存在的情况下结构体里就用p_node类型申明了p_next,应将第四行改成struct tag_node *p_next.


六、typedef和#define在定义数据类型时有什么不同?
#define只是简单的字符串替换而typedef则是为一个类型起新名字,通常typedef更好,不用担心表达式的问题。


七、如何对复杂变量建立一个类型别名?

在传统表达式里用类型名替代变量名,然后把关键字typedef加在语句开头。


八、枚举与#define宏的区别是什么?

(1)#define宏常量是在预编译阶段进行简单替换,枚举常量则是在编译的时候确定其值。

(2)一般在编译器里,可以调试枚举常量,但是不能调试宏常量。

(3)枚举可以一次定义大量相关常量,而#define宏一次只能定义一个。


九、联合与结构有什么不同?

在结构中各成员有各自的内存空间,一个结构变量的总长度为各成员长度之和;而在联合中,各成员共享一段内存空间,一个联合变量的长度等于各成员中最长的长度(同样遵循对齐)。


十、在什么情况下适合用联合体?
在C/C++程序的编写中,当多个基本数据类型或复合数据结构要占用同一片内存时;当多种类型、多个对象、多个事物只取其一时,我们可以使用联合体。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值