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 ;
- }
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++分析的更多相关文章
- PHP的final关键字、static关键字、const关键字
在PHP5中新增加了final关键字,它可以加载类或类中方法前.但不能使用final标识成员属性,虽然final有常量的意思,但在php中定义常量是使用define()函数来完成的. final关键字 ...
- C++中const关键字的使用总结
C++中使用const关键字来修饰常量,下面从两个方面总结:变量和成员函数. 变量:const可以修饰普通变量.指针(数组)和结构体. 1.const修饰普通变量是最简单的情形.这样的用法多为在程序中 ...
- final关键字+const关键字
final关键字 1.如果我们希望某个类不被其它的类来继承(可能因为安全考虑),可以使用final. 例题 <? final class A{} class B extends A{};//会报 ...
- const变量赋值报错分析
const变量赋值报错分析 const变量赋值报错 从变量到常量的赋值是合法C++的语法约定的, 如从char 到const char顺畅: 但从char **到 const char **编译器就会 ...
- C++学习11 类和new、delete操作符 类与const关键字
如果你是Java.C#.PHP程序员,那么会对 new 非常熟悉,在这些编程语言中,只能通过 new 来创建对象. 在C++中,你可以像定义变量一样来创建对象,如: Student stu; //对象 ...
- C++中的const关键字
http://blog.csdn.net/eric_jo/article/details/4138548 C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方 ...
- 陈正冲老师讲c语言之const关键字
1.const 关键字也许该被替换为 readolny const是constant的缩写,是恒定不变的意思,也翻译为常量.常数等.很不幸,正是因为这一点,很多人都认为被const修饰的值是常量.这是 ...
- C语言之头文件,static与const关键字
[前言] 最近几个月在做一个C语言代码重构的项目,过程中也让我对之前在书本上学习到的东西有些补充和巩固,在本博中总结记录下,梳理下零碎的知识点和经验也加深印象,书写是为了更好地思考.平时也都是用印象笔 ...
- static和const关键字的作用
static关键字至少有下列n个作用: (1)函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值: (2)在模块内的stat ...
随机推荐
- oracle 获取时间
1.获取当前时间的前24小时的各小时时间段 select to_char(to_date(to_char(sysdate ) ,'yyyy-mm-dd hh24') || ':00:00','yyyy ...
- 缓存区溢出之slmail fuzzing
这是我们的实验环境 kali 172.18.5.118smtp windows2003 172.18.5.117 pop3 110 smtp 25 本机 172.18.5.114 已经知道slma ...
- Xcode 4.1实用小工具:模拟网络连接和带宽
暂无评论 适用于Mac OS X Lion的开发套件Xcode 4.1中,有个新鲜的小工具叫做Network Link Conditioner(网络连接调节器),是一款具有高度可定制性的辅助工具,让用 ...
- C++入门经典-例6.20-修改string字符串的单个字符
1:使用+可以将两个string 字符串连接起来.同时,string还支持标准输入输出函数.代码如下: // 6.20.cpp : 定义控制台应用程序的入口点. // #include "s ...
- C++入门经典-例3.20-使用continue跳出循环
1:continue不是立即跳出循环体,而是跳过本次循环结束前的语句,回到循环的条件测试部分.代码如下: // 3.20.cpp : 定义控制台应用程序的入口点. // #include " ...
- halcon
读图write_imageread_image *图片路径 FilePath:='d:/pic/demo.jpg' *判断文件是否存在 file_exists ('/bin/cc', FileExis ...
- java.sql.SQLSyntaxErrorException: ORA-01795: 列表中的最大表达式数为 1000
后台报了一些异常日志,查阅后发现在 oracle 数据库中使用 in 关键字条件不能超过 1000 个,当时写查询语句时没有关注这个问题 总结一下解决方法 1.分多次查询,对查询要求不高的话.把入参的 ...
- navicat常用快捷键与SQL基本使用
一.Navicat常用快捷键 1,Ctrl+q就会弹出一个sql输入窗口 2,Ctrl+r就执行sql了 3,按f6会弹出一个命令窗口 4,Ctrl+/ 注释 5,Ctrl +Shift+/ 解除注释 ...
- iOS 图表工具charts之CandleStickChartView(K线)
关于charts的系列视图介绍传送门: iOS 图表工具charts介绍 iOS 图表工具charts之LineChartView iOS 图表工具charts之BarChartView iOS 图表 ...
- JMeter5.0核心源码浅析[转]
[转自:https://blog.csdn.net/zuozewei/article/details/85042829] 源码下载地址:https://github.com/apache/jmeter ...