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...\n");
    
    
    
    
    printf("End...\n");
    
    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...\n");
    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\n",i,*p++);
    
    printf("f(void)= %d\n",f());
    printf("f(void)= %d\n",f1());
    const int const_val = 0;
    p = (int *)&const_val;
    *p = 10;
        printf("const_val = %d\n",const_val);    
        printf("val = %d\n",val);
    printf("val = %d\n",val);
    printf("End...\n");
    
    return 0;
}

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

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

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

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

posted @ 2019-09-20 00:12  Dipsyhu  阅读(259)  评论(0编辑  收藏  举报