zoukankan      html  css  js  c++  java
  • c语言,const被绕过

    注意在现在的gcc中, const可能会被用指针绕过。

    linux:

    #include "stdlib.h"
    #include <stdio.h>
    
    int t1()
    {
        const int ii = 1234;
        printf("ii = %d
    ", ii); // error C2440: “初始化”: 无法从“const int *”转换为“int *”
         
        int* p = ⅈ
        (*p) = 444;
        printf("ii = %d
    ", ii);
        return 0;
    }
    
    /*
    root@oucaijun:/work/dcc# gcc 1.c ;./a.out 
    ii = 1234
    ii = 444
    
    */
    

      

    vs2010不会被绕过:

    // demo.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include "stdlib.h"
    #include <stdio.h>
    
    int _tmain(int argc, _TCHAR* argv[])
    { 
      const int ii = 1234;
        printf("ii = %d
    ", ii); // error C2440: “初始化”: 无法从“const int *”转换为“int *”
        
        int* p = &ii;
        (*p) = 444;
        printf("ii = %d
    ", ii);
      return 0; 
    }
     
    

      

  • 相关阅读:
    Markdown
    异异还原
    程序和算法
    运算符
    Java复习1
    复习总结
    为什么Byte是8位,但是却只能表示到127,而不是255?
    笔记的认识
    笔记本触摸板
    电脑热键
  • 原文地址:https://www.cnblogs.com/mylinux/p/4668086.html
Copyright © 2011-2022 走看看