C++整数类型长度说明 全局变量和局部变量区别 变量初始化规则 可变参数宏
- 2015-02-10 21:16:00
- admin
- 原创 3470
一、整数类型长度说明
1、int在16位机器上是16位,在32位和64位机器上是32位;
2、long和size_t在32位机器上是32位,在64位机器上的64位程序中是64位;
3、long long长度是64位;
4、使用stdint.h的类型定义,可以增强程序的可移植性;
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
int main()
{
printf("sizeof(int) is %d\n", sizeof(int));
printf("sizeof(int32_t) is %d\n", sizeof(int32_t));
printf("sizeof(uint32_t) is %d\n", sizeof(uint32_t));
printf("sizeof(int64_t) is %d\n", sizeof(int64_t));
printf("sizeof(uint64_t) is %d\n", sizeof(uint64_t));
getchar();
return EXIT_SUCCESS;
}
二、全局变量和局部变量区别
1、全局初始化的变量存储在.data区域,用户数据进行填充;
2、全局未初始化的变量存储在.bbs区域,程序启动时填充零;
3、未初始化的局部变量分配在栈上面,初始值随机;
4、静态全局变量和静态局部变量在全局区分配空间,符号名在编译时转义,只能在文件或函数内可见;
三、变量初始化规则
1、初始化列表中成员变量名和参数名可以重名,隐式加上this指针;
2、类成员默认访问权限private,结构体成员默认访问权限public;
3、拷贝构造函数用一个对象生成另一个新对象,默认拷贝构造函数拷贝全体成员,语法示例Demo(const Demo& demo);
4、拷贝赋值函数只是修改一些成员值,默认拷贝赋值函数拷贝全体成员,语法示例Demo& operator =(const Demo& demo);
5、常量引用可以引用常量和函数返回值,通过创建临时变量实现;
四、数组、结构体、枚举初始化
1、数组初始化未指定值的部分初始化为零,比如char arr[1024] = {};
2、结构体初始化未指定值的部分初始化为零,比如Value value = {1,2},value.v1=1,value.v2=2,value.v3=0;
3、枚举初始化默认从零开始;
五、可变参数宏
1、使用...申明可变参数,使用__VA_ARGS__引用可变参数;
2、使用##__VA_ARGS__在可变参数为空时去除前导逗号;