第二章数据类型十个问题
来源:互联网 发布:vbscript和vb 编辑:程序博客网 时间:2024/06/05 08:57
1. 变量的值被覆盖后如何恢复
不能恢复,以最后一次赋值的值为准。
2. 宏定义与const常量定义之间有什么区别
define是宏定义,程序在预处理阶段将用define定义的内容进行了替换,因此程序运行时,常量表中没有用define定义的常量,系统不为它分配内存;const定义的常量,在程序运行时在常量表中,系统为它分配内存。
define定义的常量,预处理时直接进行了替换,所以编译时不能进行数据类型检验;const定义的常量,在编译时进行严格的类型检验,可以避免出错。
define定义表达式时要注意“边缘效应”。
3 类型强制转换是否要占用内存空间
在C语言中,强制类型转换有两种含义:
1.将一个数据,复制为另一个数据类型,并且使用新类型的数据,此时可以认为新类型的数据,在内存结构方面与原有数据没有任何关系,这是实实在在的发生了转换,并且执行这个转换相关的代码是编译器生成的,例如:
char c=’c’
int i = (int) c;
2.将一个数据当作另外一个数据类型使用,让编译器认为这就是另外一个数据类型,此时数据没有发生任何转换,在计算机的角度没有任何事情发生,也不为这个转换生成任何代码,只是编译器认为这个语句合法了
4 指针定义时‘*’靠着类型还是变量
两种情况对编译器来说一样,只是让阅读代码的人看起来方便,比如:
int *p,q;和int* p,q;
两种定义都是p为int类型指针,q为int类型,阅读代码的人可能会把第二种情况中的p和q误认为int类型指针
5 声明和定义如何区分
变量和对象不加extern永远是定义,类中的除外
函数只有函数头是声明,有函数体是定义
类永远只是声明,类成员函数的函数体是定义
6 Auto,register,extern,static使用有什么区别
对于auto变量:是函数中的局部变量,动态地分配存储空间,数据存储在动态存储区中,在调用该函数时系统会给他们分配存储空间,在函数调用结束时就自动释放这些存储空间
对于register变量:为了提高效率,C语言允许将局部变量的值放在CPU中的寄存器中,只有局部自动变量和形式参数可以作为寄存器变量
对于extern变量:外部变量是在函数的外部定义的,它的作用域从变量定义处开始,到本程序文件的结尾,如果外部变量不在文件的开头定义,其有效的作用范围只限于定义处到文件终
对于static变量:静态局部变量属于静态存储类别,在静态存储区内分配存储单元,在程序整个运行期间都不释放
7 枚举能做到事,#define能不能做到?如果能,那为什么还需要枚举
#define可以编译任意类型的常量,而枚举只能是定义整型常量
枚举可以一次定义大量常量,#define只能一次定义一个
枚举可以集中管理数据,具相同属性的整型数据可使用枚举,枚举可实现取值的自增,也可指定每个枚举的值,编写代码更容易,相对来说能减少出错的机会,也便于代码的后期维护和修改,枚举在内存中不占空间
8 联合体变量如何赋值和使用
对联合体变量的赋值,使用都只能是对变量的成员进行
联合变量的成员表示为:联合变量名.成员名
不允许只用联合变量名作赋值或其它操作,也不允许对联合变量作初始化赋值,赋值只能在程序中进行
一个联合体变量,每次只能赋予一个成员值。一个联合体变量的值就是联合变量的某一个成员值
9 用void表示的数据类型有两种相反的意思,如何区分
void数据类型对立面,即“无类型”,本身不是一种数据类型,使用如下:
(1)如果函数没有返回值,那么应将其声明为void类型
(2)如果函数无参数,那么声明函数参数为void
void *通用类型指针,可以指向任何类型数据,例:void *pVoid;float *pFloat; pVoid=*pFloat;//正确。无需强制转型(任何类型的指针都可以直接赋值给void*[赋值给其它类型,需要强转])
10 valotile与const有什么区别
如果一个变量不会被本程序改变,通常可能给它加上const,,但如果该变量可能被其它程序(或计算机操作过程中自己)改变而本程序又在检测这个变量的值,就需要给它加上volatile,于是变量i就同时有volatile和const,这个时候i就具有const和volatile的双重属性,i变量不可以在编译过程中被程序代码修改,同时编译器不得对i进行优化编辑
- 第二章数据类型十个问题
- 第二章数据类型问题与解答
- C++第二章 数据类型
- 第二章 数据类型
- 第二章 数据类型
- 第二章 数据类型
- 第二章数据类型
- 第二章数据类型
- 第四章语句十个问题
- C#基础:第二章 数据类型
- LabTalk 编程第二章--数据类型
- 第二章 运算和数据类型
- 第二章 变量和数据类型
- 第二章 变量和数据类型
- 第二章 变量 和 数据类型
- 第二章 第一节:数据库数据类型
- 每天十个java面试题之第二章
- 第三章运算符,表达式十个问题
- 2017-10-6 七道题
- 【Leetcode】【python】Maximum Subarray
- 【BZOJ2426】【HAOI2010】工程选址
- Mac Pro 安装mysql
- 走穿java23种设计模式-5原型模式
- 第二章数据类型十个问题
- 第二章 SQL命令参考-ALTER DATABASE
- 【BZOJ3995】【SDOI2015】道路修建
- [BZOJ2426][HAOI2010] 工厂选址 (神奇的贪心)
- [bzoj-4808]马 题解
- 遇到的保存网页的问题
- JZOJsenior1168.【NOIP动态规划专题】合唱队形
- bzoj2794 [Poi2012]Cloakroom ( 背包DP+离线 )
- luogu 1057 传球游戏