Linux C编程第二章的10个问题以及解决方案
来源:互联网 发布:隔音棉 知乎 编辑:程序博客网 时间:2024/06/16 09:11
1、什么是变量名以及强制类型转换能够成立的原因?
变量名是在变量声明的时候,该名字就和内存中一块地址绑定在一起了。可以通过变量名直接找到对应的内存区域,也可以通过地址找到其内存区域。
变量的值是变量所对应的内存区域内存放的二进制序列,变量的值不会因为变量的类型发生了改变而变化,当变量被转化为对应类型时,内存区域的二进制序列以该类型的形式翻译出来,这也是强制类型转换能够成立的原因。
2、什么是全局变量和局部变量?
局部变量亦称内部变量,是在函数内部定义的变量,其作用域只限于函数内部,离开函数后使用该变量即为非法。
全局变量亦称外部变量,是在函数外定义的变量,其作用域在整个源程序内,在函数内部使用全局变量一般应做全局变量的说明,说明符为extern,若在函数前定义了全局变量,在函数内使用时可不加以说明。
3、常量中分为直接常量和符号常量,二者有什么区别?
直接常量为字面常量,就是我们通常见到的各种数字,表达式等,代表一个明确的数值。符号常量,如宏定义中#define,就是仅仅把一个字符串形式赋给变量,该字符串可以是任何形式,但不能参与任何运算,例如3*3,它不是9,而仅仅是3*3,在函数中参与运算时要注意优先级。
4、Auto,register,extern,static使用有什么区别
对于auto变量:是函数中的局部变量,动态地分配存储空间,数据存储在动态存储区中,在调用该函数时系统会给他们分配存储空间,在函数调用结束时就自动释放这些存储空间
对于register变量:为了提高效率,C语言允许将局部变量的值放在CPU中的寄存器中,只有局部自动变量和形式参数可以作为寄存器变量
对于extern变量:外部变量是在函数的外部定义的,它的作用域从变量定义处开始,到本程序文件的结尾,如果外部变量不在文件的开头定义,其有效的作用范围只限于定义处到文件终
对于static变量:静态局部变量属于静态存储类别,在静态存储区内分配存储单元,在程序整个运行期间都不释放
5、声明和定义的区别?
定义就是将一个变量名匹配到一个固定的内存空间,定义只能被定义一次。
声明是提前告知编译器该变量已经匹配到相应的一块内存上了,其定义可能在其他地方,声明可以出现多次。
6、什么是联合体?
联合与结构相似,在结构中各成员有各自的空间,一格结构变量的总长度是各成员长度之和。在联合中,各成员共享一段内存空间,联合变量的长度等于各成员中最长的长度。联合变量可被赋予任一成员值,但每次只能赋一种值,赋入新值则冲去旧值。
7、联合体变量如何赋值和使用
对联合体变量的赋值,使用都只能是对变量的成员进行
联合变量的成员表示为:联合变量名.成员名
不允许只用联合变量名作赋值或其它操作,也不允许对联合变量作初始化赋值,赋值只能在程序中进行
一个联合体变量,每次只能赋予一个成员值。一个联合体变量的值就是联合变量的某一个成员值
8、typedef的作用是什么?
typedef主要用来给变量一个易记且意义明确的新名字和简化一些比较复杂的类型声明。
用法:在通常定义和声明的格式前加上typedef,那定义或声明的变量名即为新的类型名。
9、用void表示的数据类型有两种相反的意思,如何区分?
void 数据类型对立面,即“无类型”,本身不是一种数据类型,使用如下:
(1)如果函数没有返回值,那么应将其声明为void类型
(2)如果函数无参数,那么声明函数参数为void
void * 通用类型指针,可以指向任何类型数据,例:void *pVoid;float *pFloat; pVoid=*pFloat;//正确。无需强制转型(任何类型的指针都可以直接赋值给void*[赋值给其它类型,需要强转])
10、宏定义与const常量定义之间有什么区别
define是宏定义,程序在预处理阶段将用define定义的内容进行了替换,因此程序运行时,常量表中没有用define定义的常量,系统不为它分配内存;const定义的常量,在程序运行时在常量表中,系统为它分配内存。
define定义的常量,预处理时直接进行了替换,所以编译时不能进行数据类型检验;const定义的常量,在编译时进行严格的类型检验,可以避免出错。
define 定义表达式时要注意“边缘效应”。
- Linux C编程第二章的10个问题以及解决方案
- Linux C编程第三章的10个问题以及解决方案
- Linux C编程第四章的10个问题以及解决方案
- Linux操作以及c编程规范 、附带个问题
- 编程珠玑:第二章,3个问题
- Linux C编程一站式学习第二章
- C语言编程的十六个问题
- 编程珠玑第二章问题A,B,C
- 【linux】ubuntu11.10下各种问题以及解决方案
- exceptional c++:47个c++工程难题、编程问题和解决方案(中文版)
- linux c编程问题
- Linux下的c编程 出现问题
- Linux下C语言编程的问题
- 《编程珠玑》第二章三个问题A---查找40亿个32位整数中缺失的某个整数
- C专家编程第二章
- 股市编程问题的解决方案
- linux系统编程 第二章
- 关于Linux socket编程之listen函数的第二个参数backlog.
- 如何用construct2制作一个游戏?
- Timer控件相关操作
- HDOJ 2091 空心三角形
- 生产者-消费者模型
- 写给那个茶水妹的《乘风破浪》诞生记
- Linux C编程第二章的10个问题以及解决方案
- java进阶,Spring,SpringMVC等总结
- 主成分分析(PCA)算法原理介绍
- c++中iterator迭代器和vector容器
- uva 12012
- MVP模式从入门到精通
- 枚举Enum
- POJ 3233 Matrix Power Series 笔记
- Oracle函数总结:字符函数