1、C到C++安全性增强
1、C语言
#include <stdio.h>
int main(void)
{
const int a = 10; //在C语言里这里不赋值可以编译的过去,但是这里不初始化以后就没办法初始化
//a = 100; 这里不能改但是下面的方法可以把a的值给改了
int *p = &a; //如果写成const int *p =&a;拿掉int,const *p ,const修饰的是 *p ;*p就无法改变
*p = 100;
char *q = (char *)malloc(100);//虽然 char *q = malloc(100);也可以但是不严谨
printf("a = %d\n",a);
return 0;
}
//const int a ; int const a; // 相等 因为如果把int去掉都是const a;
//int *const p 拿掉int,*const p这样的话修饰的是p,所以p的值不能改变,p指向的可以改变
//const int *const p;这样就都不能改变。
C++
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
const int a = 100;//真正的const
//如果一开始不初始化会报错
//a = 200; //会报错
//名修栈道,暗度陈仓
// int *p = &a; //会报错,类型不匹配要写应该写成const int *p =&a
// *p = 10; //在C语言里这里的a值是可以改变的,但是在C++不行
// char *q = malloc(100);//在C语言不会报错,C++报错,因为malloc默认是void *类型
//所以应该写成
char *q = (char*)malloc(100);
//cout <<a<< endl;
return 0;
}
浙公网安备 33010602011771号