C/C++关于数据类型的一些问题
来源:互联网 发布:手机锁屏病毒源码 编辑:程序博客网 时间:2024/05/21 11:08
1.声明跟定义的本质区别是什么?
声明就是指给除了当前变量或者函数,或者类什么的名字,不给其中的内容,就是先告诉你有这样一个什么类型的变量或者函数,但是这个变量或者函数的具体信息却是不知道的。就好比跟你介绍一个人的时候,声明就是只告诉你这个人叫什么,但是缺不给你说这个人到底怎么样,他有哪些优点,缺点,喜好问题是什么的
定义就不一样了,定义直接告诉你了所有的东西,这个变量是什么,这个函数是什么功能,这个类里面包含了什么东西。很具体的说明
2.在使用const时,该如何辨别它是修饰什么的?
1)将类型(int等)去掉
2)看const修饰谁,谁的值就是不能修改的
3.在使用register修饰变量时应该注意什么?
1)待声明为寄存器变量类型应该是CPU寄存器所能接收的类型,意味着寄存器变量是单个变量,变量长度应该小于寄存器长度
2)不能对寄存器变量使用取地址符“&”,因为该变量没有内存地址
3)尽量在大型频繁操作时使用寄存器变量,且声明的变量个数应该尽量少。
4.使用volatile修饰变量的作用是什么?
例: 1 int a = 10;
2 int b = a;
3 int c = a;
编译器在扫描上述代码后发现在给a赋值后,a的值意志没有改变,所以在运行后两行程序时,编译器为了提高效率,会直接将10赋给b,c
但是,如果该代码运行在多线程中,在一个线程上下文中没有改变它的值,不代表别的线程也不会改变它的值,所以为了防止这种情况出现,我们可以将一些变量声明为volatile,这样每次对其值访问时,都会从内存里,寄存器里读取,从而保证数据的一致
5. 枚举与#define 宏的区别
1)#define 宏常量是在预编译阶段进行简单替换,枚举常量则是在编译的时候确定其值
2)一般在编译器里,可以调试枚举常量,但是不能调试宏常量
3)枚举可以一次定义大量相关的常量,而#define 宏一次只能定义一个
6.使用extern时应该注意什么?
1) 多个源文件 共享变量和函数时,,由于多个C源文件的编译是独立的,所以编译器无法判断多个源文件共享的变量的类型是否一致,等到链接的时候,多个源文件编译后的.o文件连接成一个目标文件,如果有一个以上源文件对同一个变量进行了初始化,则报错,至少GCC是这样。
2)在写程序时,如果使用extern函数,一定要注意外部函数的参数类型,参数个数和返回值类型,最好保持一致,要不然会出现意想不到的问题
7.使用typedef的作用和目的是什么?
作用:为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(如int,char等)和自定义的数据类型(如struct等)
目的: 1)给变量起一个易记且意义明确的新名字。
2)简化一些比较复杂的类型声明
8.typedef与#define的区别和各自的优点
#define只是简单的字符串替换而typedef则是为一个类型起新名字。
#define 宏定义可以用#ifdef和#ifndef等来进行逻辑判断,还可以使用#undef来取消定义
typedef符合范围规则,使用typedef定义的变量类型,其作用范围限制在所定义的函数或者文件内(取决于此变量定义的位置),而宏定义则没有这种特性
9.枚举类型的使用方法
一般的定义方式如下:
enum enum_type_name
{
ENUM_CONST_1;
ENUM_CONST_2;
ENUM_CONST_3;
......
ENUM_CONST_n;
}enum_variable_name;
enum变量类型还可以给其中的常量符号赋值,如果不赋值则会从被赋初值的那个常量开始依次加1,如果都没有赋初值,他们的值从0开始依次加1.
10.联合体的使用方法及作用
union 联合名
{
成员表
};
成员表中含有若干成员,成员的一般形式为
类型说明符 成员名
成员符的命名应符合标识符的规定。
在C/C++程序的编写中,当多个基本数据类型或复合数据结构要占用同一片内存时,我们要使用联合体;当多种类型,多个对象,多个事物只取其一时(n选一),我们也可以使用联合体来发挥其长处
声明就是指给除了当前变量或者函数,或者类什么的名字,不给其中的内容,就是先告诉你有这样一个什么类型的变量或者函数,但是这个变量或者函数的具体信息却是不知道的。就好比跟你介绍一个人的时候,声明就是只告诉你这个人叫什么,但是缺不给你说这个人到底怎么样,他有哪些优点,缺点,喜好问题是什么的
定义就不一样了,定义直接告诉你了所有的东西,这个变量是什么,这个函数是什么功能,这个类里面包含了什么东西。很具体的说明
2.在使用const时,该如何辨别它是修饰什么的?
1)将类型(int等)去掉
2)看const修饰谁,谁的值就是不能修改的
3.在使用register修饰变量时应该注意什么?
1)待声明为寄存器变量类型应该是CPU寄存器所能接收的类型,意味着寄存器变量是单个变量,变量长度应该小于寄存器长度
2)不能对寄存器变量使用取地址符“&”,因为该变量没有内存地址
3)尽量在大型频繁操作时使用寄存器变量,且声明的变量个数应该尽量少。
4.使用volatile修饰变量的作用是什么?
例: 1 int a = 10;
2 int b = a;
3 int c = a;
编译器在扫描上述代码后发现在给a赋值后,a的值意志没有改变,所以在运行后两行程序时,编译器为了提高效率,会直接将10赋给b,c
但是,如果该代码运行在多线程中,在一个线程上下文中没有改变它的值,不代表别的线程也不会改变它的值,所以为了防止这种情况出现,我们可以将一些变量声明为volatile,这样每次对其值访问时,都会从内存里,寄存器里读取,从而保证数据的一致
5. 枚举与#define 宏的区别
1)#define 宏常量是在预编译阶段进行简单替换,枚举常量则是在编译的时候确定其值
2)一般在编译器里,可以调试枚举常量,但是不能调试宏常量
3)枚举可以一次定义大量相关的常量,而#define 宏一次只能定义一个
6.使用extern时应该注意什么?
1) 多个源文件 共享变量和函数时,,由于多个C源文件的编译是独立的,所以编译器无法判断多个源文件共享的变量的类型是否一致,等到链接的时候,多个源文件编译后的.o文件连接成一个目标文件,如果有一个以上源文件对同一个变量进行了初始化,则报错,至少GCC是这样。
2)在写程序时,如果使用extern函数,一定要注意外部函数的参数类型,参数个数和返回值类型,最好保持一致,要不然会出现意想不到的问题
7.使用typedef的作用和目的是什么?
作用:为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(如int,char等)和自定义的数据类型(如struct等)
目的: 1)给变量起一个易记且意义明确的新名字。
2)简化一些比较复杂的类型声明
8.typedef与#define的区别和各自的优点
#define只是简单的字符串替换而typedef则是为一个类型起新名字。
#define 宏定义可以用#ifdef和#ifndef等来进行逻辑判断,还可以使用#undef来取消定义
typedef符合范围规则,使用typedef定义的变量类型,其作用范围限制在所定义的函数或者文件内(取决于此变量定义的位置),而宏定义则没有这种特性
9.枚举类型的使用方法
一般的定义方式如下:
enum enum_type_name
{
ENUM_CONST_1;
ENUM_CONST_2;
ENUM_CONST_3;
......
ENUM_CONST_n;
}enum_variable_name;
enum变量类型还可以给其中的常量符号赋值,如果不赋值则会从被赋初值的那个常量开始依次加1,如果都没有赋初值,他们的值从0开始依次加1.
10.联合体的使用方法及作用
union 联合名
{
成员表
};
成员表中含有若干成员,成员的一般形式为
类型说明符 成员名
成员符的命名应符合标识符的规定。
在C/C++程序的编写中,当多个基本数据类型或复合数据结构要占用同一片内存时,我们要使用联合体;当多种类型,多个对象,多个事物只取其一时(n选一),我们也可以使用联合体来发挥其长处
阅读全文
0 0
- C/C++关于数据类型的一些问题
- 关于BF53X的c编程数据类型问题
- 关于c语言的一些问题
- 关于C::t的一些问题
- 关于数组问题的一些总结(c/c++)
- C的一些问题
- C的一些问题
- C语言一些数据类型
- Objective-C中的一些特殊的数据类型
- Objective-C中的一些特殊的数据类型
- Objective-C中的一些特殊的数据类型
- Objective-C中的一些特殊的数据类型
- Objective-C中的一些特殊的数据类型
- Objective-C中的一些特殊的数据类型
- Objective-C中的一些特殊的数据类型
- Objective-C中的一些特殊的数据类型
- Objective-C中的一些特殊的数据类型
- Objective-C中的一些特殊的数据类型
- matplotlib学习之绘图基础
- poj3276:Face The Right Way
- Solr 6.0环境搭建
- (22)jdbc二
- 求解最小生成树——prime算法模板
- C/C++关于数据类型的一些问题
- 在Linux系统中如何把文件拷贝到U盘
- ImportError: No module named Tkinter
- IntelliJ IDEA 连接tomcat出现问题
- ubuntu下安装hping的大坑。。。
- python 爬虫爬取所有上市公司公告信息(二)
- 无参考图像质量评价——漏勺模型
- 广义表的长度和深度
- 一点一点学线程(二)锁