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常量的语法特性。

const关键字 C与C++分析的更多相关文章

  1. PHP的final关键字、static关键字、const关键字

    在PHP5中新增加了final关键字,它可以加载类或类中方法前.但不能使用final标识成员属性,虽然final有常量的意思,但在php中定义常量是使用define()函数来完成的. final关键字 ...

  2. C++中const关键字的使用总结

    C++中使用const关键字来修饰常量,下面从两个方面总结:变量和成员函数. 变量:const可以修饰普通变量.指针(数组)和结构体. 1.const修饰普通变量是最简单的情形.这样的用法多为在程序中 ...

  3. final关键字+const关键字

    final关键字 1.如果我们希望某个类不被其它的类来继承(可能因为安全考虑),可以使用final. 例题 <? final class A{} class B extends A{};//会报 ...

  4. const变量赋值报错分析

    const变量赋值报错分析 const变量赋值报错 从变量到常量的赋值是合法C++的语法约定的, 如从char 到const char顺畅: 但从char **到 const char **编译器就会 ...

  5. C++学习11 类和new、delete操作符 类与const关键字

    如果你是Java.C#.PHP程序员,那么会对 new 非常熟悉,在这些编程语言中,只能通过 new 来创建对象. 在C++中,你可以像定义变量一样来创建对象,如: Student stu; //对象 ...

  6. C++中的const关键字

    http://blog.csdn.net/eric_jo/article/details/4138548 C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方 ...

  7. 陈正冲老师讲c语言之const关键字

    1.const 关键字也许该被替换为 readolny const是constant的缩写,是恒定不变的意思,也翻译为常量.常数等.很不幸,正是因为这一点,很多人都认为被const修饰的值是常量.这是 ...

  8. C语言之头文件,static与const关键字

    [前言] 最近几个月在做一个C语言代码重构的项目,过程中也让我对之前在书本上学习到的东西有些补充和巩固,在本博中总结记录下,梳理下零碎的知识点和经验也加深印象,书写是为了更好地思考.平时也都是用印象笔 ...

  9. static和const关键字的作用

    static关键字至少有下列n个作用: (1)函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值: (2)在模块内的stat ...

随机推荐

  1. [LOJ3119][CTS2019|CTSC2019]随机立方体:组合数学+二项式反演

    分析 感觉这道题的计数方法好厉害.. 一个直观的思路是,把题目转化为求至少有\(k\)个极大的数的概率. 考虑这样一个事实,如果钦定\((1,1,1),(2,2,2),...,(k,k,k)\)是那\ ...

  2. Hibernate动态条件查询(Criteria Query)

    1.创建一个Criteria实例net.sf.hibernate.Criteria这个接口代表对一个特定的持久化类的查询.Session是用来制造Criteria实例的工厂. Criteria cri ...

  3. auth 认证组件的补充

    Django自带的用户认证 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的事情呢. Djang ...

  4. 上传本地文件到linux

    Linux 命令行上传文件 Linux服务器,硬盘坏了,更换硬盘后,重装了好像是Foreda v22的操作系统,我在/var/www/html/目录下新建了我的个人文件夹 kma,然后我在此kma文件 ...

  5. Maven中的dependency的scope作用域

    1.test范围指的是测试范围有效,在编译和打包时都不会使用这个依赖 2.compile范围指的是编译范围有效,在编译和打包时都会将依赖存储进去 3.provided依赖:在编译和测试的过程有效,最后 ...

  6. 剑指offer32----之字形打印一颗二叉树

    题目 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 思路 在这里我们如果单纯的使用队列去弄的话,会很 ...

  7. Golang协程实现流量统计系统(1)

    # 学习内容: # 学习目标: 学习Golang的基础开发 常用的Golang编程技艺 精巧省力的Go Lib 协程的真实应用实践 与其他语言对比着学 协程并发模型的深度应用 Growth hacki ...

  8. vue问题一:触发接口

    //在script中先引用 import api from './../../api/index' //vue文件方法中 写 del(index, row) { let self=this; // 传 ...

  9. leetcode 198. House Robber 、 213. House Robber II 、337. House Robber III 、256. Paint House(lintcode 515) 、265. Paint House II(lintcode 516) 、276. Paint Fence(lintcode 514)

    House Robber:不能相邻,求能获得的最大值 House Robber II:不能相邻且第一个和最后一个不能同时取,求能获得的最大值 House Robber III:二叉树下的不能相邻,求能 ...

  10. python之拷贝文件

    做了个小实验, 用于拷贝文件夹下面的jpg. 用于拓展, 可以引入类和方法, 拷贝你指定的任意类型的文件. import os src = 'C:\\Users\\Administrator\\Des ...