牛客网-C++
2017/8/18

程序运行结束时才释放;静态变量在内存的静态存储区,静态数据一直占有着该存储单元直到程序结束;一般局部变量在函数调用结束后释放变量占用的存储单元,而静态局部变量不释放。
静态全局变量的作用域只是定义它的文件,不能被其他文件使用;
静态局部变量只声明一次,一旦申请内存成功,不再接受重复申请。

‘-’ :左对齐;30:最小字段宽度;.4:精确度保留小数4位;f:double精度浮点数;e:科学计数法
printf中,%f通杀单精度和双精度;scanf中,%f和%lf才有区别

下面一句是错误的,符合语句形如:
for(int i=0;i<20;i++) ,这里int在for循环之外就无效了

类的静态成员属于整个类,而不是某个对象,可以被类的所有方法访问,子类可以访问父类静态成员;
静态方法属于整个类,在对象创建之前就已经分配空间,类的非静态成员要在对象创建之后才有内存,所有静态方法只能访问惊天成员,不能访问非静态成员。
静态成员可以被任一对象修改,修改后的值可以被所有对象共享。

64位系统下,指针和double占8个字节,int占4个字节,char占一个字节(64位系统下,指针占用64位,8个字节)
加上字节对齐(对齐成8个字节)
所以sizeof(p)=8(p是一个指针);sizeof(*p)=(char 1个字节-->字节对齐成为8字节)+(d作为一个指针占用8字节)+(b作为一个int值占用4字节,int c:16共16位占用两个字节,字节对齐成为8个字节)+(e作为一个double值占用8个字节)=32个字节
sizeof(p->a)=1;sizeof(p->e)=8
贴张图吧:
32位编译器 char :1个字节char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器) short int : 2个字节 int: 4个字节unsigned int : 4个字节float: 4个字节double: 8个字节long: 4个字节 long long: 8个字节unsigned long: 4个字节 64位编译器 char :1个字节char*(即指针变量): 8个字节short int : 2个字节int: 4个字节unsigned int : 4个字节float: 4个字节double: 8个字节long: 8个字节long long: 8个字节unsigned long: 8个字节


_beginthreadex()比较于CreateThread()有更高的线程安全性,不会造成多个线程公用一个全局变量的情况

浙公网安备 33010602011771号