1.字符串
(1)C++中每个字符串都以字符'\0'作为结尾。
(2)一个char类型占用一个字节;int类型占用4个字节;一个指针在32位系统上占用4个字节,在64位系统上占用8个字节。NULL空指针也占4或8个字节。
(3)定义一个字符串:char str[] = "abcd";,此时strlen(str)=4,sizeof(str)=5,因为sizeof求得的是占用的字节数,因此包含了结尾符号;而strlen求得的是字符串的长度,不包括最后的结尾符。因此str2=""空字符串的sizeof是1,strlen是0.
strlen的头文件是#include <string.h>
(4)string 类型的对象中末尾不会自动加'\0'字符,字符串中间可以存在'\0';string str,则不论str多长,sizeof(str)=sizeof(string)=32
(5)
2.指针和引用
https://blog.csdn.net/qq_27678917/article/details/70224813
3.数组
(1)int data[] = {1,2,3,4,5};int mat[3][3] = {1,2,3,4,5,6,7,8,9};此时sizeof(data)等于20.
(2)数组作为函数参数时,多维数组的除了第一维之外都要写明大小。如:int fun(int data[]) 和 int fun(int mat[][3]).
(3)当数组作为函数的参数进行传递时,数组会自动退化为同类型的指针,此时sizeof的结果为sizeof(指针)=4/8;
(4)动态数组:int *p = new int;//默认初始化;int *p = new int();//值初始化;int *p = new int(0);
(5)string *p = new string[2];//p指向一个大小为2的数组,数组元素的类型是string,此时sizeof(p)=8,sizeof(*p)=32;
4.公有继承和私有继承
在继承时:
1、不管采用哪种形式(public, protected或private),基类中的私有成员都不可以被继承;如果非要在派生类中使用基类的私有成员,可以有两种方法:一是使用属性,二是使用友元类或友元函数。
2、如果采用public形式,则基类除了私有成员的其它所有都被原样的继承到派生类中;即在基类中是public的,在派生类中还是public的,在基类中是protected的,在派生类中还是protected的。
3、如果采用protected形式,则基类中除了私有成员的其它所有都被以protected的形式继承到派生类中。
C++中的继承方式有:
public、private、protected三种(它们直接影响到派生类的成员、及其对象对基类成员访问的规则)。
(1)public(公有继承):继承时保持基类中各成员属性不变,并且基类中private成员被隐藏。派生类的成员只能访问基类中的public/protected成员,而不能访问private成员;派生类的对象只能访问基类中的public成员。
(2)private(私有继承):继承时基类中各成员属性均变为private,并且基类中private成员被隐藏。派生类的成员也只能访问基类中的public/protected成员,而不能访问private成员;派生类的对象不能访问基类中的任何的成员。
(3)protected(保护性继承):继承时基类中各成员属性均变为protected,并且基类中private成员被隐藏。派生类的成员只能访问基类中的public/protected成员,而不能访问private成员;派生类的对象不能访问基类中的任何的成员。
5.静态变量
1、静态变量在内存的静态存储区,静态数据一直占有着该存储区单元直到程序结束;
2、静态局部变量只声明一次,一旦申请内存成功,不再接受重复申请;
3、静态局部变量的作用域与一般局部变量一样,二者区别在于以上两点:一般局部变量在函数调用结束后释放变量占用的存储单元,而静态局部变量不释放,直到程序结束才释放。函数中的静态变量是静态局部变量 函数退出后不被释放,在程序运行结束时才释放。只在函数中可访问。
4、静态全局变量的作用域只能是定义它的文件里,不是被其他文件使用。
6.数据库
在视图上使用INSERT语句,下列(C)情况可以进行插入操作.
A.视图中包含了使用统计函数的结果
B.视图由多个表连接而成,对多个表的列进行插入操作
C.视图全部包含了基本表中属性为NOT NULL的列
D.视图中使用了DICTINCT
解析:
视图除了进行查询记录外,也可以利用视图进行插入、更新、删除记录的操作,减少对基表中信息的直接操作,提高了数据的安全性。
在视图上使用INSERT语