1.*p++和(*p)++的区别
*p++是先取值,然后将指针地址执行++操作
(*p)++是先取值,然后对(*p)这个值进行++操作
2.枚举变量enum的值如何计算
enum{a,b=5,c,d=4,e};
cout<<a<<b<<c<<d<<e
结果为0 5 6 4 5
因为在枚举变量的值默认为前一个变量的值加1,而第一个枚举值没有被赋值,所以默认为0
3.static的应用
(1)局部静态变量
存储空间分配不同,auto类型分配在栈上, 属于动态存储类别, 占动态存储区空间, 函数调用结束后自动释放, 而static分配在静态存储区, 在程序整个运行期间都不释放. 两者之间的作用域相同, 但生存期不同.
static局部变量在所处模块初次运行时进行初始化工作,且只操作一次
如果不赋初值,则自动赋初值为0或空字符
void staticLocalVar() { static int a = 0; // 运行期时初始化一次, 下次再调用时, 不进行初始化工作 cout<<"a="<<a<<endl; ++a; } int main() { staticLocalVar(); // 第一次调用, 输出a=0 staticLocalVar(); // 第二次调用, 记忆了第一次退出时的值, 输出a=1 return 0; }