首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C与C++在const用法上的区别

    首先,C和C++在大体结构上不同,却在语法上相同。  所以在使用的时候,我们会时常遇到一些莫名其妙的问题,觉得语法上是正确的,但是编译的时候却出现一个红色的 error!...&var; 9 *p = 1; 10 printf("%d\n",var); 11 getchar(); 12 }  答案很定不用说:    1      原因也很简单:  C弱类型语言...,C++是强类型语言。  ...原因是C++是强类型语言,C++的数据的类型更加严格与苛刻 !      ...当然对于C++为何会出现指针的值为*p=3而var=10这样的情况,其实,*P所指的常量地址真实的内存已经修改了,但是编译器并没有从内存地址中取值,而是直接从寄存器中取的值,所以var=10依旧表面上依旧没有发生什么改变

    73140

    在Linux上用Eclipse写C++程序

    我厂很多同学使用VC在windows上编写linux的C/C++程序,然后再传的开发服务器上,然后再编译和调试。如果有修改,可能会直接用vi去改了,然后再把源代码同步回来。其实这样做挺折腾的。...但是,也有另外一个方案,就是在 Linux上安装个写C/C++程序的IDE,这样可以直接编写、编译、运行、上传SVN,非常方便。...注意Eclipse有很多个包,如果只写C/C++程序,就直接下Eclipse CDT这个套件好了,省了还要下支持JAVA开发的东西。 ?...如果你使用gtest来做单元测试,可以装个“C/C++ Unit Testing Support“,这样就可以直接在IDE里面运行和调试单元测试了。...按Ctrl+Tab可以在.h和.cpp之间切换。保存的时候自动编译。

    3.5K70

    实战|C++在vscode上的调试配置

    ⽬标 按照本⽂的流程可在vscode平台上实现像在windows系统下VS调试C++程序的效果。...本⽂旨在让刚接触vscode却⼜不知如何 debug的童鞋能够快速搭建⾃⼰的编程环境,使更多的精⼒focus在coding或algrithm上,若有错误的地⽅,欢迎指正和交流。...直接点击左侧第五个按钮,在⾥⾯搜索⼀些⽀持C++的插件,⽐如下图中的C/C++,C++ Intellisense,直接搜索插件名字后点下载就会⾃动安装,安装完了就会在下图的ENABLED列表⾥了。...接下去只要再弄2个⽂件,就可以debug你的项⽬了,第⼀个是tasks.json⽂件,可以在⽹上搜索如何⽣成,不过更直接的⽅ 式是直接在.vscode下新建⼀个tasks.json⽂件,然后把以下内容直接复制上去...总结 在vscode下配置C++调试环境主要就是做⼀件事:创(复)建(制)1个⽂件夹和3个⽂件: launch.json tasks.json 编译执⾏的脚本:例⼦中的脚本内容实际就是cmake内容

    4.3K20

    开启C++之旅(上):探索命名空间与函数特性(缺省参数和函数重载)

    实际上cout和cin分别是ostream和istream类型的对象,>>和重载等知识(挖个坑,以后详细介绍) 3.缺省参数 3.1概念 缺省参数是声明或定义函数时为函数的参数指定一个缺省值...缺省值必须是常量或者全局变量 4.函数重载 学过Java的同学必然不陌生 4.1概念 函数重载:是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表...+支持重载的原理----名字修饰 在C/C++中,一个程序要运行起来,需要经历以下几个阶段:预处理、编译、汇编、链接 链接器看到Test.o调用某个函数,但是没有函数的地址,就会到Func.o的符号表中找函数的地址...在 Linux 下,这些标识符是通过一种名为名字修饰(Name Mangling)的方式来生成的: _Z + 函数名字符个数 + 函数名 + 每个参数类型首字母 所以重载函数虽然函数名相同,但是在链接函数地址时所依靠的标识符却不同...通过这里就理解了C语言没办法支持重载,因为同名函数没办法区分。

    18010

    C#入门知识大总结(在C语言的基础上)

    前言 本文为C#入门知识,是在有一定C语言或C++基础上进行的总结,因此会省略许多C语言的基础知识,但是对一些C#特有或者是C语言中比较少见或重要的知识也会归纳到博文里。...=的比较 由于char是特殊的整型,因此它既可以和自己同类型比较 还可以和数值类型进行比较 还可以和字符类型进行大小比较 char c = 'a'; result = c > 123; result =...c > 'B'; 十、逻辑运算符 逻辑与:&&    逻辑或:||      逻辑非:!...符号和规则与C语言中相同 1.注意 逻辑运算符当中逻辑非(!)...十三、 if语句 原理等同C语言 十四、switch语句 原理等同C语言 十五、while语句 原理等同C语言 十六、do while语句 原理等同C语言 十七、for循环 原理等同C语言

    28420

    C++第一弹 -- C++基础语法上(命名空间 输入输出 缺省参数 函数重载 引用)

    实际上cout和cin分别是ostream和istream类型的对象,>>和重载等知识,这些知识我们我们后续才会学习,所以我们这里只是简单学习他们的使用。...为什么C++支持函数重载, 而C语言不支持重载呢?...这是因为在函数定义与声明分离时, 编译阶段无法直接获得函数地址, 只是通过函数声明,语法可以通过, 链接阶段, C语言直接通过函数名字进行查找, 不支持函数重载, 而C++是使用修饰后的函数名字去查找就可以支持函数重载...那么,也就是说在声明与定义分离时, 链接过程中需要通过函数名字去找函数地址, 而C语言直接使用函数名字查找,不支持重载, 而C++使用过修饰后的名字查找, 支持重载....在底层实现上实际是有空间的,因为引用是按照指针方式来实现的。 引用和指针的不同点: 引用概念上定义一个变量的别名,指针存储一个变量地址。

    6610

    C#基础知识大总结(在C语言的基础上)

    前言 本文为C#基础知识,是在有一定C语言或C++基础上进行的总结,因此会省略许多C语言的基础知识,但是对一些C#特有或者是C语言中比较少见或重要的知识也会归纳到博文里。...自定义枚举名 {     自定义枚举项名字1, //默认第一个值是0 下面依次累加     自定义枚举项名字2,     自定义枚举项名字3, } 如果自己给其中一个枚举项赋了值,那么后面的项都会在此基础上递增...,除非人为的再次改变 b.声明 一般在namespace语句块当中声明  可以在class语句块中 可以在struct语句块中 不能在函数中声明!!!...c.枚举的类型转换(不常用) // 枚举和int互转 int i = (int)playerType; Console.WriteLine(i); // 枚举和string相互转换 string str...static void Speak(string str = "还没有话语") {     console.WriteLine(str); } //调用时可以不传入参数 Speak(); 六、函数重载

    23520

    居然还有大学在大一上C语言课?

    之前在知乎上看到这样一个问题:为什么现在部分985高校还是给大一上C语言课: 这个题主是某985CS专业学生,发现学校居然给大一教C语言程序设计,而不是现在最流行的Java或者Python,不由得产生了疑问...985/211 这种国内最顶尖的一批高校,应该注重通识教育而不是专项教育,在专业上更要注重基础、底层、偏向原理。 只有掌握了最核心的东西,学起那些偏技能的东西才会很快很轻松。...3、《C和指针》 这本书的特点是在指针上花了大功夫,指针绝对是C语言的精髓,理解了就等同于攻克了最难的部分。...这是一本吐槽C语言的书,基本上介绍了大多数C语言的坑,有不少精髓,在C语言界久负盛名,进阶时一定要看。...把以上4本书学透,C语言基本上就差不多了,最后强调一下:不管学习哪门语言,实践都是在第一位,因为最终我们都是要上手写代码,解决具体问题的,所以大家在学习的过程中一定要多实践、多写代码。

    65740

    通过数据分析看Rust能否在安全上完虐C、C++

    “谁是世界上最好的语言?” 这是程序员聚在一起必定会讨论的问题,特别是在大家还不熟,不好意思聊妹子、聊游戏的时候。...作为C/C++的有力替代者,Rust其中一个最引人注目的特点就是安全性,今天我们尝试通过一些数据分析来看看Rust能否在安全上完虐C/C++。...结合C/C++的缺陷类型集中在内存操作部分,因此选择了今年6月份ACM SIGPLAN国际会议上的一份报告。...看到这里可能有人会说Rust在安全性上和C/C++没什么区别嘛。...总结 1、从数据分析上看Rust在解决内存问题上确实如它宣称的一样,通过safe机制可以很好的防止内存相关缺陷的发生; 2、从数据分析上看Rust并没有如它所宣称的一样能够很好的解决多线程问题,甚至safe

    1.4K30

    C++11 在析构函数中执行lambda表达式(std::function)捕获this指针的陷阱

    lambda表达式是C++11最重要也最常用的一个特性之一。lambda来源于函数式编程的概念,也是现代编程语言的一个特点。...我想说的是善用lambda表达式,将给C++编程带来极大的便利,这是本人最近学习C++11以来真实深切的感受,但是有时候误用lambda表达式也会给编程带来极大的隐患,本文以最近的经历说明lambda表达式在使用上的一例陷阱...一开始我总是在纠结为什么gcc和vs2015下运行的结果不一样,既然在gcc下运行正常说明我的代码逻辑没问题,这该不会是vs2015的一个bug吧?想想也不太可能。还得从代码上找原因。...[=] { fun(12345); }; [&] { fun(12345); }; 析构顺序 然后我想到了C++ 析构顺序的问题,按照C++标准,C++对象析构的顺序与构造顺序完全相反...我同样用前面在std::function析构函数加断点的方式在eclipse+gcc环境下做了测试,测试结果表明gcc也是按C++标准顺序执行对象析构的,但不同的是gcc在构造下面这个lambda表达式时

    1.7K10
    领券