const修饰变量
以下操作后会出现警告:warning C4090
int main()
{
const int i = 6;
int* ptr = NULL;
ptr = &i; //C4090
*ptr = 7;
printf("%d\n", i);
return 0;
}
更改为
int main()
{
const int i = 6;
int* ptr = NULL;
ptr = (int*) & i;
*ptr = 7;
printf("%d\n", i);
return 0;
}
是因为i类型是const修饰,但是ptr是整型指针类型,类型不同。所以通过强转就没警告了
static使用
static 修饰的变量在每次调用会自动保存退出值
void print();
int main()
{
print(); // 1
print(); // 2
return 0;
}
void print()
{
static int c = 1;
printf("%d\n", c);
c++;
}