第一篇
1. 指针初始化
int * p1 = new int(10)
int * p2 = new int[10]
int * p3 = new int[10]()
P1是初始化一个整型变量,初始化值为10。
p2,p3是一个指向数组的指针。
对于内置类型而言,new仅仅是分配内存,除非后面显示加(),相当于调用它的构造函数。
对于自定义类型而言,只要一调用new,那么编译器不仅仅给它分配内存,还调用它的默认构造函数初始化,即使后面没有加()。
2. enum枚举
enum枚举类型是C/C++中的一种数据类型,与struct和class一样是用户自定义的类型,其特点在于enum类型的变量取值是有限的,是可以一一列举出来的。
enum bool {false,true}; //bool类型就是C++预定义的枚举
枚举在C语言标准里面定义的就是整型,不管哪个编译器都遵循这个标准。
在系统内部,C语言会把枚举变量和常量作为整数来处理,默认情况下,编译器会把整数0、1、2、3……赋给特定枚举中的常量。
enum {Sun, Mon = 5, Tue, Wed, Thu, Fri, Sat} d1, d2, d3, d4;
d1 = Sun; //初始化
d2 = Mon; //初始化
d3 = Tue; //初始化
d4 = Wed; //初始化
cout << d1<<endl;
cout << d2 << endl;
cout << d3 << endl;
cout << d4 << endl;
程序输出为:0, 5, 6, 7
d1,d2,d3,d4在函数内部定义时,一定要进行初始化,不然会是一个随机值。
d1,d2,d3,d4在函数外部定义时,自动进行初始化,值0。
3. 指针和数组的sizeof
32位机器上:
void example(char acWelcome[]){
printf("%d",sizeof(acWelcome));
return;
}
void main(){
char acWelcome[]="Welcome to Huawei Test";
example(acWelcome);
printf("\n%d\n", sizeof(acWelcome));
return;
}
程序输出:
4
23
数组作为函数的参数是会退化为函数指针(数组作为函数参数的时候经常是需要传递数组的大小)
sizeof(数组): 数组占用空间的字节数
sizeof(指针) :机器地址的位数