C++基本知识点(一)

第一篇

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(指针) :机器地址的位数

猜你喜欢

转载自blog.csdn.net/huanghaihui_123/article/details/84493292