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

  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 ;
}
int f1()
{
return ;
}
int main(int argc, char *argv[])
{
test_struct S1 = {,,};
printf("Begin...\n");
int val=;
for(int i=; i <; i++)
{
for(int j=;j<; j++)
{ val = i+j;
}
}
int *p;
p=&S1.a;
for(int i=;i < ;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 = ;
p = (int *)&const_val;
*p = ;
printf("const_val = %d\n",const_val);
printf("val = %d\n",val);
printf("val = %d\n",val);
printf("End...\n"); return ;
}

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

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

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

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

最新文章

  1. 配置appium 1.6.3 for MAC
  2. JavaScript 全局对象
  3. PHP使用SnowFlake算法生成唯一ID
  4. TCP连接与关闭
  5. Eclipse发布地址不同引发的问题
  6. net use
  7. 例题:输入您的出生日期,判断你的星座,主要练习使用datetime类及if else语句。很实用
  8. linux驱动程序之电源管理 之linux休眠与唤醒(2)
  9. 水题:HDU 5119 Happy Matt Friends
  10. Js- 菜单
  11. SQL Server DAC 管理员专用连接
  12. Linux常用C函数---字符串转换篇
  13. [经典] 使用Python批量重命名iPhone拍摄的照片-按照拍摄时间重命名
  14. SpringMvc Ant通配符的使用
  15. iBatis基础知识
  16. .net带参数SQL语句的完整定义
  17. Asp.Net Core 全局模型验证
  18. top后台执行显示:top: failed tty get 错误
  19. 基于mybatis基本操作
  20. IdentityServer4-Resource定义-翻译

热门文章

  1. MySQ彻底删除与安装配置
  2. is == 编码与解码
  3. 自动化部署脚本--linux执行sh脚本
  4. C++入门经典-例4.7-变量的作用域
  5. OkHttp3 使用详解
  6. LeetCode 152. 乘积最大子序列(Maximum Product Subarray)
  7. LeetCode 55. 跳跃游戏(Jump Game)
  8. java 对象引用为null时,出现的bug问题
  9. UVA 816 -- Abbott&#39;s Revenge(BFS求最短路)
  10. Linux高级调试与优化——内存泄漏实战分析