void *calloc(unsigned n,unsigned size);
用calloc函数可以为一维数组开辟动态存储空间,n为数组元素个数,每个元素长度为size.
函数返回值指向所分配域的起始位置的指针;如果分配不成功,返回NULL。
p=calloc(10+20,sizeof(int))//开辟30x4个字节的临时分配域,把起始地址赋给指针变量p
![]()
![]()
利用new运算符进行申请空间的操作,长度为aa字符串的长度还要在加上‘/0’
![]()
访问权限修饰符可以随意使用,只不过习惯把同一种修饰符的放在一起
![]()
编译器会忽略数组第一维的长度,所以参数数组中第一维的长度可以省略,第二维不可以。
![]()
数组名是一个常量指针,char *const s,指针的指向是不可以修改的,指针指向的内容是可以修改的。字符串"abcdefg"代表一个地址,不能改变一个指针的指向
数组名是指针,不能被赋值
![]()
32位机器跟64位机器上 char类型的都是1个字节
![]()
此处指针先占用8字节。int占用4字节,满足要求不用补齐,char占用一个字节,同时总的字节数必须满足8的倍数即16
![]()
union类型的变量在定义时是可以被初始化的,定义如下union类型 union Test { int a; float b; }; Test test = {1}; test变量的定义可以初始化,初始值的类型必须是union中第一个成员的类型。
![]()
![]()
只有给对象分配内存才调用构造函数 ,子类不能继承父类的构造函数,只能显式的调用
![]()
如果子类的函数与父类的名称相同,但是参数不同,父类函数被隐藏(重定义)
如果子类函数与父类函数的名称相同&&参数也相同&&但是父类函数没有virtual,父类函数被隐藏
如果子类函数与父类函数的名称相同&&参数也相同&&但是父类函数有virtual,父类函数被覆盖(重写)