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;
}

  

posted @ 2016-05-09 07:19  SuGuolin  阅读(264)  评论(0编辑  收藏  举报