牛客网-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个字节
float4个字节
double:   8个字节
long:   4个字节
 long long8个字节
unsigned long4个字节
64位编译器
char 1个字节
char*(即指针变量): 8个字节
short int : 2个字节
int:  4个字节
unsigned int : 4个字节
float4个字节
double:   8个字节
long:   8个字节
long long8个字节
unsigned long8个字节

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

原文地址:https://www.cnblogs.com/bananaa/p/7388842.html