• const关键字 C与C++分析


    1  C与C++的区别

      1.1、C允许定义两个变量名相同的变量,而C++不允许。

        

      在C语言中是允许定义两个名字相同的全局变量。

         

     

       在C++中是不允许定义两个名字相同的全局变量。

      测试代码:

      

    /*  编译环境
        gcc version 5.4.0 20160609  
    */
    #include <stdio.h>
    
    int global_val ;
    int global_val ;
    
    int main(int argc, char *argv[])
    {
        printf("Begin...
    ");
        
        
        
        
        printf("End...
    ");
        
        return 0;
    }

      1.2、C只允许变量在作用域的最上面定义,而C++允许哪里需要使用就在哪里定义

        

        

          C++ 允许变量在使用的过程中定义。而C语言是不允许的。

      1.3、C与C++在定义结构体中的不同之处

        

         在c语言中定义结构体,不能直接使用.struct 关键字来声明一个结构体,在使用的是还需要加 typedef 关键字来重新声明这是一个结构体。而c++定义结构体直接用struct 关键字即可

        

      1.4、int f() 与 int f(void) 在C与C++中的区别

      在c语言中 int f() 表示形参可以多个,int f(void)表示该函数没有形参。但是在C语言中是能够通过的。

      

       在C++中int f() 与 int f(void)是等价的。在C++中编译不能通过

      

       

       

    2   C与C++  关键字const 关键字解析

      2.1、C语言中的const

        const 修饰的变量是可以通过指针来改变的。所以在 c语言中const只是在编译的过程中有效,而代码运行的过程中是无效的。所以const关键字不能定义个真正意义上的常量。例如:

        

      2.2、C++中的const

      const 修饰的变量是不可以通过指针来改变的。所以在 c++语言中const能定义个真正意义上的常量。例如:

      

      2.3 、小结

        所有测试代码C++:

        

    /*  编译环境   汉字转换为UTF-8
        gcc version 5.4.0 20160609  
    */
    #include <stdio.h>
    
    //int global_val ;
    //int global_val ;
    struct test_struct 
    {
        int a;
        int b;
        int c;
    };
    int f(void)
    {
        return 10;
    }
    int f1()
    {
        return 11;
    }
    int main(int argc, char *argv[])
    {
        test_struct S1 = {1,2,3};
        printf("Begin...
    ");
        int val=0;
        for(int i=1; i <10; i++)
        {
            for(int j=1;j<10; j++)
            {
                
                val = i+j;
            }    
        }
         int *p;
        p=&S1.a;
        for(int i=0;i <3 ;i++)
        printf("test_struct val_%d = %d
    ",i,*p++);
        
        printf("f(void)= %d
    ",f());
        printf("f(void)= %d
    ",f1());
        const int const_val = 0;
        p = (int *)&const_val;
        *p = 10;
            printf("const_val = %d
    ",const_val);    
            printf("val = %d
    ",val);
        printf("val = %d
    ",val);
        printf("End...
    ");
        
        return 0;
    }

      与C语言不同,C++中的const不是只读变量。

      C++中的const 是一个真正意义上的常量。

      C++编译器可能会为const常量分配空间。

      C++完全兼容C语言中const常量的语法特性。

  • 相关阅读:
    WPF之Binding基础八 使用Linq数据作为Binding的源
    WPF之Binding基础七 使用XML数据作为Binding的源
    WPF之Binding基础六 使用ADO.NET作为Binding的数据源
    WPF之Binding基础五 使用集合对象作为列表控件的ItemSource
    WPF之Binding基础四 使用DataContext作为Binding的源
    解决 VS的IISExpress localhost可以访问,127.0.0.1和本机ip访问不了(错误400)
    c# 使用特性封装提供额外行为Validate验证
    c# 反射调用方法、获取设置值、好处和局限性
    c# 反射加读取类、方法、特性、破坏单例
    linq to object使用
  • 原文地址:https://www.cnblogs.com/hjxzjp/p/11553422.html
Copyright © 2020-2023  润新知