C++整数类型长度说明 全局变量和局部变量区别 变量初始化规则 可变参数宏

2016-05-30 21:16:00
admin
原创 2326
摘要:C++整数类型长度说明 全局变量和局部变量区别 变量初始化规则 可变参数宏

一、整数类型长度说明

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、静态全局变量和静态局部变量都是在全局区分配空间,符号名在编译时转义,只能在文件或者函数内可见;


三、C++变量初始化规则

1、初始化列表中成员变量名和参数名可以重名,C++隐式加上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__在可变参数为空时去除前导逗号;

发表评论
评论通过审核之后才会显示。