精华内容
下载资源
问答
  • C与C++

    千次阅读 2005-10-23 23:11:00
     C++虽然主要是以C的基础发展起来的一门新语言,但她不是C的替代品,不是C的升级,C++C是兄弟关系。 没有谁比谁先进的说法,更重要的一点是CC++各自的标准委员会是独立的,最新的C++标准是C++98,
    在此论坛上发现了一些特别的问题,这些问题在其他地方并不存在,猜想是因为这里以学生为主,而学校的教材和教师与IT发展脱节严重。

    1. C++虽然主要是以C的基础发展起来的一门新语言,但她不是C的替代品,不是C的升级,C++和C是兄弟关系。
    没有谁比谁先进的说法,更重要的一点是C和C++各自的标准委员会是独立的,最新的C++标准是C++98,最新的C标准是C99。
    因此也没有先学C再说C++的说法,也不再(注意这个"不再")有C++语法是C语法的超集的说法。

    2. C++/CLI 和 C# 是微软的,它们与C和C++没有任何关系,虽然部分语法相似。
    但哪两种语言不相似呢?都是abc这26个字母。

    3. 不要使用TC/TC++/BC/CB等古老的编译器来学习C/C++,因为它们太古老了,不支持新的C/C++标准。
    不要使用CBX/VC++6.0/VC2005等对C/C++标准支持不好的编译器,虽然这些编译器适合工作,但不适合学习,因为它们中的语法陷阱很多。
    记住唯一适合学习的编译器是 gcc/mingw。

    4. 不要用""代替<>来包含系统头文件,虽然有些编译器允许你这样做,但它不符合C/C++标准。
    错误的示例:#include "stdio.h",#include "iostream"

    5. 不要将main函数的返回类型定义为void,虽然有些编译器允许你这样做,但它不符合C/C++标准。
    不要将函数的int返回类型省略不写,在C++中要求编译器至少给一个警告。
    错误的示例:void main() {},main() {}

    6. 不要把VC++中的 #include "stdafx.h" 贴出来,它是预编译头文件。
    如同上菜时不要把厨师也放到托盘中。

    7. [C++]不要#include <iostream.h>,不要#include <string.h>,因为它们已经被C++标准明确的废弃了,请改为 #include <iostream> 和 #include <cstring>。
    规则就是:
    a. 如果这个头文件是旧C++特有的,那么去掉.h后缀,并放入std名字空间,比如 iostream.h 变为 iostream。
    b. 如果这个头文件是C也有的,那么去掉.h后缀,增加一个c前缀,比如 string.h 变为 cstring、stdio.h 变为 cstdio, 等等。
    BTW:不要把<string.h>、<cstring>、<string>三个头文件搞混淆
    BTW:windows.h不是C/C++的标准文件,因此它的命名C/C++不管。

    8. 不要再写 char* p = "XXX" 这种语句,要写成 const char* p = "XXX",编译器之所以让前者通过编译是为了兼容以前的大量的旧代码。
    BTW:const TYPE* p 和 TYPE const* p 是一样的,风格不同而已。
    BTW:C语言中也有const关键字。

    9. 不要在同一条语句中包含一个变量的多个++/--,因为它们的解析在C/C++标准中没有规定,完全取决于编译器的个人行为。

    10. C/C++是平台无关性语言,因此系统相关的process/GUI等不在标准C/C++库中。
    比如 graphics.h和windows.h等是由某个编译器提供的,而不是由C/C++提供的。

    11. C/C++只是语言,而且是平台无关性语言。
    论坛上有部分人甚至认为C就是dos,C++就是windows,那么请问linux是什么?

    12. [C++]面向对象曾经是设计c with class(C++的前身)的主要目的,但C++不是,C++是一个多典范语言。
    主要支持过程调用、基于对象、面向对象、泛式编程 这四种编程典范,当然还支持functional, generative,meta programming等典范。

    13. 语法学家不是文学家,所以当你学会了一门计算机语言时,你还需要学习数据机构和算法,还需要掌握工具和平台API的用法。

    14. C/C++是通用语言,因此语法很复杂,你应当裁减成适合你自己的语法集合,比如裁减成better C和ADT。

    15. C/C++是通用语言,因此只含通用的库,你应该丰富自己需要的库,比如汽车工业协会有自己的C/C++函数/类/模板库。
    展开全文
  • C与C++的区别与联系

    千次阅读 2018-05-26 21:43:58
    本篇博客对C与C++的区别与联系进行了整理。并对一些小的知识点进行了扩展。 首先我们先来看一看C/C++的联系 C/C++的联系:   C是C++的子集,C++兼容大部分的C语言的语法结构 C/C++的区别:   我们都知道C是...

    本篇博客对C与C++的区别与联系进行了整理。并对一些小的知识点进行了扩展。

    首先我们先来看一看C/C++的联系

    C/C++的联系:

     

    • C是C++的子集,C++兼容大部分的C语言的语法结构

    C/C++的区别:

     

    • 我们都知道C是面向过程的语言,而C++是面向对象的语言。那这里我们就要知道什么是面向对象?

          面向对象是一种思想,是基于面向过程而言的,就是说面向对象是将功能等通过对象来实现,将功能封装进对象之中,让对象去实现具体的细节;这种思想是将数据作为第一位,而方法或者说是算法作为其次,这是对数据一种优化,操作起来更加的方便,简化了过程。面向对象有三大特征:封装、继承、多态,其中封装性指的是隐藏了对象的属性和实现细节,仅对外提供公共的访问方式,这样就隔离了具体的变化,便于使用,提高了复用性和安全性。对于继承性,就是两种事物间存在着一定的所属关系,那么继承的类就可以从被继承的类中获得一些属性和方法;这就提高了代码的复用性。继承是作为多态的前提的。多态是说父类或接口的引用指向了子类对象,这就提高了程序的扩展性,也就是说只要实现或继承了同一个接口或类,那么就可以使用父类中相应的方法,提高程序扩展性,但是多态有一点不好之处在于:父类引用不能访问子类中的成员。

    特点:

    1:将复杂的事情简单化。

    2:面向对象将以前的过程中的执行者,变成了指挥者。

    3:面向对象这种思想是符合现在人们思考习惯的一种思想。

    2、面向对象的三大特征:封装,继承、多态

    1.封装:只隐藏对象的属性和实现细节,仅对外提供公共访问方式

    好处:将变化隔离、便于使用、提高复用性、提高安全性

    原则:将不需要对外提供的内容隐藏起来;把属性隐藏,提供公共方法对其访问

    2.继承:提高代码复用性;继承是多态的前提

    注:

        子类中所有的构造函数都会默认访问父类中的空参数的构造函数,默认第一行有super();若无空参数构造函数,子类中需指定;另外,子类构造函数中可自己用this指定自身的其他构造函数。

    3.多态:是父类或接口定义的引用变量可以指向子类或具体实现类的实例对象

    好处:提高了程序的扩展性

    弊端:当父类引用指向子类对象时,虽提高了扩展性,但只能访问父类中具备的方法,不可访问子类中的方法;即访问的局限性。

    前提:实现或继承关系;覆写父类方法。

     

    • C/C++的动态内存管理的方法不同,C是使用malloc/free函数,而C++是使用new/delete关键字(关于malloc/free和new/delete在知识点扩充里补充)
    • C++支持函数重载,而C语言不支持
    • C中的struct和C++中的class类也有区别,C++的类是C中没有的,C++可以使用C的类,并且C++对struct进行了进一步的扩展,使struct在C++中可以和class一样当做类使用,而唯一和class不同的地方在于:struct的成员默认访问修饰符是public,而class默认的是private;
    • C++中有引用,C中没有;此时就要说一下引用和指针的区别了(在知识点扩充里补充)
    • C++特有的输入输出流;cin>>      cout<<
    • C语言中,如果一个函数没有指定返回值的类型,默认返回int类型;C++中,如果一个函数没有返回值,则必须指定为void
    • 在C语言中,函数没有指定的参数列表时,默认可以接收任意多个参数;但是在C++中,因为严格的参数类型检测,没有参数列表的函数,默认为void。

    知识点扩充

    扩展1:malloc/free 和 new/delete的用法和区别

     

    1. malloc是从堆上动态开辟空间的,而new是从自由存储区开辟为对象动态分配内存空间。
    2. malloc/free势函数,而new/delete是关键字
    3. malloc对开辟的空间大小有严格的指定,而new只需要对象名
    4. malloc开辟的空间即可以给单个对象使用也可以给数组使用,释放的方式都是free();而new开辟对象数组用new[size],释放的时候用delete[];
    5. new在申请内存分配空间时,不需要指定内存块的大小,编译器会自动根据类型信息自行计算。而malloc则需要指定内存块的大小;
    6. 返回值,malloc开辟成功后返回void*,需要通过强制类型转换将void*指针转换。new内存分配成功时,返回的是对象类型的指针,类型严格与对象匹配,不需要进行强制类型转换;
    7. 如果内存分配失败,那么malloc将会返回NULL,而new会抛出异常
    8. 自定义类型:new会先调用operator new函数,深爱你给足够的内存(通常底层用malloc实现),然后调用类型的构造函数,初始化成员变量,最后返回自定义类型的指针。delete先调用operator delete函数书房内存(底层通常用free类实现)
    9. malloc开辟空间大小如果太小,可以使用realloc实现,但是new没有直观的方法实现

    注:

    自由存储区:是C++基于new的一个抽象的概念,凡是通过new操作符进行内存申请,该内存即为自由存储区。而堆是操作系统的术语,是操作系统所维护的一块特殊的内存,用于程序的内存动态分配,C语言是使用malloc从堆上分配空间的,使用free释放已分配的空间,如上所述,new不位于堆中。

    ps:

    在C++中,内存区分为5个区,分别是堆,栈,自由存储区,全局/静态存储区和常量存储区

    在C中,内存区分为堆,栈,全局/静态存储区和常量存储区(对比C++,C内存区不包含自由存储区)

    扩展2:指针和引用的区别

     

    1. 指针是一个实体,指向一块内存,它的内容是所指向内存的地址;引用只是一个别名
    2. 引用在使用时必须初始化,而指针可以不需要
    3. 有NULL指针,但是没有NULL引用
    4. 可以由const指针,但是没有const引用
    5. 指针在使用时可以指向其他对象,而引用只能是一个对象的引用
    6. 在sizeof中的含义不同,引用的结果为引用类型的大小,但是指针是地址空间所占的字节数
    7. 可以由多级指针,但是没有多级引用
    8. 引用自加改变变量的内容,指针自加改变了指针的指向
    9. 做为参数传递时,指针需要被解引用才可以对对象进行操作,而引用可以直接改变引用所指向的对象

    扩展3:常见关键字的作用

     

    1. static关键字

     

    • 修饰全局变量时,会将变量的链接属性变为内部链接属性,并且变量的存储位置变为全局静态区
    • 修饰局部变量时,改变变量的存储位置为静态存储区,改变局部变量的生命周期为整个程序开始到结束
    • 修饰类的成员变量和函数,属于类而不属于对象,属于所有实例类

         2.const关键字

     

    • 修饰全局变量:C/C++略有不同,C++的const修饰的全局变量可以作为数组的初始化大小,而C不可以;同时变量的值不能被修改;C++利用const这一属性,代替了C中的define进行全局常量的定义
    • 修饰局部变量:我们来举个栗子看看:
    const int *p;//修饰的是所指向的内容不能改变,p可以改变
    int const *p//和上面一样
    int* const p;//修饰的指针p不能改变,但是但是所指向内容可以改变
    • 修饰类的成员变量:必须初始化列表,除此之外呢,还必须在初始化列表中初始化的引用类型的数据成员,没有默认的构造函数的对象成员,如果存在继承关系,如父类没有默认构造函数,则也必须在吃石化列表中被初始化,初始化列表对数据成员的初始化顺序是按照数据成员的声明顺序严格执行的
    • 修饰类的成员函数:一般放在成员函数的最后面,修饰的是类的成员函数中的隐藏的参数this指针,代表不可以通过this指针修改类的数据成员,声明形式如下:
    Base::void fun() const;

         3.volatile关键字

           volatile一般修饰变量,而它存在的原因是因为,我们的程序在进行编译的时候,编译器会进行一系列的优化,比如,某个变量被修饰为const的,编译器就认为,这个值是只读的,就会在寄存器中保存这个变量的值,每次需要的时候从寄存器直接读取,但是有时候,我们可能会在不经意间修改了这个变量,比如说我们去了这个变量的地址,然后强行改变这个变量在内存中的值,那么编译器并不知道,读取还是从寄存器中读取,这就造成了结果的不匹配,而volatile声明的变量就会告诉编译器,这个变量随时会改变,需要每次都从内从中读取,就是不需要优化,从而避免了这个问题,其实,volatile应用更多的场景是多线程对共享资源的访问的时候,避免编译器的优化,而造成多线程之间的通信不匹配!

    展开全文
  • 关于C与C++的区别

    千次阅读 2017-06-02 14:17:45
    笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,...CSDN视频网址:http://edu.csdn.net/lecturer/144 项目开发中,经常会遇到C与C++之间互相调用问题,但是有时会遇到在C语言没啥问题,但是将其放到C++中就会出现问

    笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,已出版书籍:《手把手教你架构3D游戏引擎》电子工业出版社和《Unity3D实战核心技术详解》电子工业出版社等。

    CSDN视频网址:http://edu.csdn.net/lecturer/144

    项目开发中,经常会遇到C与C++之间互相调用问题,但是有时会遇到在C语言没啥问题,但是将其放到C++中就会出现问题,本篇博客在此给读者总结一下,在遇到下面这些情况时就要注意了。

    一、在C++使用函数时,事先要先声明否则就会报错,但是在C语言就不存在这种问题,如下所示:

    #include <stdio.h>
    int main(void)
    {
        printf("%d\n", fun());
        return 0;
    }
    
    int fun()
    {
       return 10;
    }
    二、在C++中,使一个常量指针指向一个常量变量,编译时会发生报错,但它是在C中没有任何问题。

    #include <stdio.h> 
    int main(void)
    {
        int i = 10;   
        int j = 20;
        const int *ptr = &i;    /* ptr is pointer to constant */
      
        printf("ptr: %d\n", *ptr); 
        *ptr = 100;        /* error: object pointed cannot be modified
                         using the pointer ptr */
      
        ptr = &j;          /* valid */
        printf("ptr: %d\n", *ptr);
      
        return 0;
    }
     error: assignment of read-only location ‘*ptr’
    再看另一个例子:

    #include <stdio.h> 
     
    int main(void)
    {  
        int const i = 10;    /* i is stored in read only area*/
        int j = 20;
     
        int const *ptr = &i;        /* pointer to integer constant. Here i 
                                     is of type "const int", and &i is of 
                                     type "const int *".  And p is of type                            
                                    "const int", types are matching no issue */
     
        printf("ptr: %d\n", *ptr); 
     
        *ptr = 100;        /* error */
     
        ptr = &j;          /* valid. We call it as up qualification. In 
                             C/C++, the type of "int *" is allowed to up 
                             qualify to the type "const int *". The type of 
                             &j is "int *" and is implicitly up qualified by 
                             the compiler to "cons tint *" */
     
        printf("ptr: %d\n", *ptr);
     
        return 0;
    }

    error: assignment of read-only location ‘*ptr’
    为了加深读者印象再来一个:

    #include <stdio.h>
      
    int main(void)
    {
       int i = 10;
       int j = 20;
       int *const ptr = &i;    /* constant pointer to integer */
      
       printf("ptr: %d\n", *ptr);
      
       *ptr = 100;    /* valid */
       printf("ptr: %d\n", *ptr);
      
       ptr = &j;        /* error */
       return 0;
    }
    error: assignment of read-only variable ‘ptr’
    最后一个例子:

    #include <stdio.h>
      
    int main(void)
    {
        int i = 10;
        int j = 20;
        const int *const ptr = &i;        /* constant pointer to constant integer */
      
        printf("ptr: %d\n", *ptr);
      
        ptr = &j;            /* error */
        *ptr = 100;        /* error */
      
        return 0;
    }
      error: assignment of read-only variable ‘ptr’
         error: assignment of read-only location ‘*ptr’
    以上读者在编写代码时就要注意了。

    三、在C中,一个void指针可以直接分配给其他一些指针,如int *,char *。 但是在C ++中,一个void指针必须被明确地指定类型。

    int main()
    {
       void *vptr;
       int *iptr = vptr; //In C++, it must be replaced with int *iptr=(int *)vptr; 
       return 0;
    }
    、以下程序在C编译和运行良好,但在C ++编译失败。 C ++中的const变量必须被初始化,但是在c中是没有必要的。 

    int main()
    {
        const int a;   // LINE 4
        return 0;
    }

    五、我们可以使用一个C ++特定的关键字作为变量名。 该程序将不会在C ++中编译,但会在C中编译。

    int main(void)
    {
        int new = 5;  // new is a keyword in C++, but not in C
        printf("%d", new);
    }
    同样,我们可以使用其他关键字,如delete, explicit, class, .. 等。
    六、C ++比C更严格的类型检查,例如,以下程序在C中编译,但不在C ++中编译。 在C ++中,我们得到编译器错误“从'int'到'char *'”的无效转换。

    #include <stdio.h>
    int main()
    {
        char *c = 333;
        printf("c = %u", c);
        return 0;
    }

    以上是在编程时经常遇到的,在此给读者列出来,供参考。。。。。。。。。














    展开全文
  • Matlab转c与c++代码

    万次阅读 多人点赞 2015-10-17 15:36:38
    然而很多的实际运用上matlab毕竟还不是很普及,相反还是c与c++更多。同时正版matlab这样一个昂贵的软件大家都懂得。有的时候我们在使用到国外许多人开发的matlab版的算法工具箱的时候想把它变成c与c++版本的很困难,...

    作为一个强大的科学计算软件,matlab广泛运用于较多领域,以其简单的编程风格,便利的调试环境等等众多优点,在编写算法与测试的时候通常用到。然而很多的实际运用上matlab毕竟还不是很普及,相反还是c与c++更多。同时正版matlab这样一个昂贵的软件大家都懂得。有的时候我们在使用到国外许多人开发的matlab版的算法工具箱的时候想把它变成c与c++版本的很困难,那么所以如何将matlab程序编程c程序就很重要了。Mathworks公司似乎考虑了这点,早早集成了matlab转c的代码生成模块:matlab coder。本节简单一窥其运用。
    Ok截至目前最新版的matlab是2015b,怎么安装上就不说了。这里介绍的是在matlab2015b下的使用。为什么选择2015b,肯定越新的版本支持的越多,要知道matlab并不是能把其自带的所有内部函数都转化为c代码的,也不是所有的matlab数据类型都可以转化的,比如2015b之前的版本,如果你的matlab代码中存在cell结构的数据时你是转换不成c代码的,不支持,2015b也才刚刚支持,所以如果碰到cell结构的数据,在以前的版本你还得去转换成其他格式,cell数据类型的数还挺麻烦,不好弄。新本还有一些其他新加功能,详细去看官网吧。怎么使用matlab coder官网也有些介绍:
    http://cn.mathworks.com/products/matlab-coder/webinars.html

    下面介绍简单实例,求取两个4*4矩阵相加后,在求取最大值与最小值。这里先用一个函数实现,在分成两个函数实现,因为有的时候函数里面再调用函数的时候该怎么办。
    一个函数的话如下:

    function [a,b] = min_max(m,n)
    temp = m+n;
    a = max(max(temp));
    b = min(min(temp));

    对了,matlab代码生成只能生成函数,对于脚本是无法生成c代码的(像上面这个带function的叫函数,没有function的m文件是脚本)。好了可以打开matlab coder了。
    这里写图片描述
    这里写图片描述

    选择刚刚的那个函数,下一步

    这里写图片描述

    由于这里只有一个函数,也不用调用其他的函数(当然matlab内部自带的函数不用管了,想min与max),所以也不用添加其他函数。下一步
    这里写图片描述

    这一步是指定输入数据类型的,比如说你的两个相加矩阵是多大的呀,是int还是double等等。这里有两种方式,一种是根据函数的使用实例自动确定输入类型,一种是自己手工确定输入矩阵大小等等。那么一般的话,如果你知道你的矩阵大小,或者简单的函数,用第二种完全可以,但是有些时候,比如说我们的输入是一个大结构体,结构体里面超复杂,你怎么去一个个确定里面的什么输入(这种情况常见于我们使用别人的工具箱的函数的时候)。这个时候第一种第一种很好了,那么第一种方式什么意思呢?就是让你自己建立一个脚本(不是函数),然后脚本你们包含了你的这个函数的用法。这里假设我的两个矩阵为4*4的矩阵,好了再建立一个实例化的test脚本如下:

    M1 = rand(4,4);
    M2 = rand(4,4);
    [a,b] = min_max(M1,M2);

    然后按照方式一选择这个test.m这里写图片描述脚本:
    点击自动确定输入类型,点完后就会出现自动确认的输入类型了。下一步
    这里写图片描述

    这是检验一下测试的脚本行不行,如果你上述不是自动确认输入方式的话可能没有这一步,然后下一步
    这里写图片描述

    到这里才是真正产生c与c++代码的时候了,当然还有些默认参数可以修改,正常你就不要改了。直接选个c或者c++,产生吧。完了以后会看到
    这里写图片描述

    有一堆,但是也有几个主要的(用到c++中不知道选哪个就都选上吧),这么个简单的matlab函数转换成c++有160多行,算了,反正也不是自己写,管他多少行。在下一步打包就完成了。

    Ok转换完的c++怎么在vs(我的是vs2010)上使用呢?

    打开vs,新建c++工程,等等等等,最后把这个生成的一大堆复制粘贴放到vs所在的那个文件夹下的那个工程中去,在vs中的源文件下添加现有项目,把刚才复制的cpp都添加进去,h文件添加到头文件(要复制粘贴,然后在添加已有项),也可以把matlab生成的example文件夹里的main的cpp与h添加进去,最后添加完的如下:
    这里写图片描述

    这个时候直接运行main是可以运行的,不过结果什么也没有,因为main函数里面随机生成4*4的矩阵是这样的,
    这里写图片描述
    全是0,且在c++这里,你也没有让它显示cout出来
    Ok,把这个main函数改一下,生成随机数也改一下,生成1-10随机数
    这里写图片描述
    这里写图片描述
    这里写图片描述
    显示出来,注意加点头文件。现在再去运行结果如下:
    这里写图片描述
    前面是两个矩阵(拍成一列了),对应相加再去求最大最小,发现是对的吧。Ok结束。

    下面把这个矩阵求和然后在求最大最小分成两个m函数,如下:

    function mn = addadd(m,n)
    mn = m+n;
    
    function [a,b] = min_max(m,n)
    temp = addadd(m,n);
    a = max(max(temp));
    b = min(min(temp));

    这样再去生成c++代码:
    这里写图片描述
    在添加函数这一块,可以把用到的都添加进去,也可以只添加最终的那个,像这里就是min_max是最终的,他会调用addadd,所以addadd加不加都可以,matlab在下一步会自动添加的。接下来类似,那么来看看识别出来的输入对象:
    这里写图片描述
    生成的代码如下,可以看到这个时候不再是一个min_max.cpp,还多了个addadd.cpp,并且在min_max函数中调用了如下:
    这里写图片描述
    后面的过程你也知道了吧,同上,好了转换的过程以及如何使用就到这里吧。

    展开全文
  • C与C++结构体的区别

    千次阅读 2017-06-04 21:14:45
    笔者介绍:姜雪伟,IT公司技术合伙人,IT高级...CSDN视频网址:http://edu.csdn.net/lecturer/144 不论在面试中还是项目开发中,都会遇到C与C++混用的情况,面对这些我们就要对它们的区别非常熟悉,这样才能在项目
  • c++C与C++的区别 C是一个结构化语言,如谭老爷子所说:它的重点在于算法和数据结构。 C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制), 而...
  • C与C++互相调用的方法

    千次阅读 2017-11-14 16:32:56
    C与C++互调用的方法,这篇文章解释的比较清楚了。对于__cplusplus 和extern "C“ 的意义也有说明,__cplusplus这个宏定义只有使用 G++编译时才会生效,所以与extern "C”配合使用,就可以兼容C调C++或C++调用C。使用...
  • C与C++的区别仅在于OPP吗?linux 编程C++是不是么有C++接口,只是调用C接口吗?
  • C与C++区别

    千次阅读 2019-06-14 08:05:59
    C中:如果函数未指定返回值类型,则默认为int  c++中:如果一个函数没有返回值,返回值类型必须指定为void 二、参数列表 C中:如果函数没有指定参数列表,则默认可以接受任意多个参数 C++中:有严格的类型...
  • C与C++简单文件操作比较

    千次阅读 2015-07-16 10:59:13
    为了更加深刻地理解C与C++对文件操作,本文以一个简单的文件读写操作为实例(分别含C和C++源程序),来简单分析一下C与C++在文件操作上的区别。首先,从头文件的角度出发:对于C++,其最大的特点是引入了“类”的...
  • Objective-C C++ 的区别

    千次阅读 2016-04-11 13:47:29
    下面总结一下 Objective-C C++ 的区别: 1, 两者最大的相同便是: 都是从 C 演化而来的面向对象语言, 两者都兼容标准 C 语言. 2, 两者最大的不同便是: Objective C 提供了运行期动态绑定机制, ...
  • C与C++的区别;面向过程与面向对象的区别;

    千次阅读 多人点赞 2018-03-09 19:53:50
    C与C++的区别:面向对象和面向过程的区别。 参考:https://www.mallocfree.com/interview/cpp-1-c.htm C++是面向对象的(object oriented programming—OOP)。强调对象,由对象实施动作。 C是面向过程的...
  • linux下C与C++混合编程

    千次阅读 2016-04-05 16:28:39
    首先,混合编程不是指在同一个文件里写C与C++。 比如说想在同意文件里同时 弱类型检查,又强类型检查,那真够呛。 混合编程包括:1,C++引用C的头文件;2,g++生成的.o与gcc生成的.o相链接。 1,在用C语言写的...
  • C与C++的11大区别

    千次阅读 2014-07-24 11:01:48
    罗列C与C++的区别,并解析如何利用好这些特性
  • c与c++ static函数的区别

    千次阅读 2012-07-02 11:13:09
    c与c++ static函数的区别 c与c++ static函数的区别 static关键字是C, C++中都存在的关键字, 它主要有三种使用方式, 其中前两种只指在C语言中使用, 第三种在C++中使用(C,C++中具体细微...
  • C与C++关于*与&(引用方式传参,传值方式传参)

    万次阅读 多人点赞 2018-08-13 23:29:43
    C++: 用C:是把地址传进去,然后用*运算取地址的内容 、 1、引用方式传参,引用相当于是外部变量的别名,实际操作的就是该变量,即在函数内对该变量进行修改的话,在外部该变量也会相应被修改。 void ...
  • STM32 进阶教程 7 - C与C++混合编程

    千次阅读 2019-07-06 19:15:42
    这些第三方的芯片提供的DEMO程序或驱动程序有时候是C++,如果先前的系统用C语言写的就会出现点问题,往往需先将C++的驱动程序自已手动改成C语言再用,本节给大家介给一下如何在KEL MDK环境中实现C与C++混合编程。...
  • ObjectC C++ 混编时的编译器设置

    千次阅读 2017-08-18 09:01:25
    IOS开发中有时候需要与C++混编,比如说使用了 opencv图像处理时。直接使用C++的类库,编译时是会直接报错的,这是因为,Xcode默认的编译模式是 According to File Type ,意思是根据文件类型来选着编译方式。 对于...
  • 这是C++教程的第一章节,建立在你具有C语言基础的前提下,直接从C++C的区别开始入手。02头文件主函数的改变C++中的头文件进行优化后,不需要采用xx.h 的方式,一般都是直接采用类名直接充当头...
  • 细说C++(一):C与C++对比

    千次阅读 2018-09-24 16:57:24
    .C/C++ C过程性语言,重点在算法和数据结构。 (C作为C++自洽子集) C++面向过程语言,首要考虑如何构造一个对象模型 <2>.C++的主要内容 基础知识 关键字 数据类型 C++输入输出 函数 指针 类...
  • c与c++中enum和struct定义的区别

    千次阅读 2015-11-09 20:12:09
    c与c++中enum定义的区别 c语言中定义枚举类型和声明枚举变量都需要enum关键字 这里写代码片
  • C与C++ 无参函数的区别

    千次阅读 2013-07-20 15:48:36
    在《C++ 编程思想》:“关于无参函数声明,C与C++有很大的差别。在C语言中,声明int fun1(),意味着一个可以有任意数目和类型的函数;而在C++中,指的却是一个没有参数的函数”。  下面是一个C语言的函数和C++的...
  • 一、C与C++的细微区别 在函数声明中: 无论是C还是在C++,都可以省略形式参数名。 但是,通常都不建议省略形式参数名。 在函数定义中: 1. 当需要使用形式参数的时候,显然,必须给形式参数命名。 2. 当...
  • C与C++学习经典网站

    千次阅读 2017-03-13 11:18:50
    C/C++优秀网站和网页清单
  • C与C++之间dll相互调用

    千次阅读 2018-03-27 20:50:18
    1、导出C函数以用于CC++的项目如果使用C语言编写的DLL,希望从中导出函数给CC++的模块访问,则应使用 __cplusplus 预处理器宏确定正在编译的语言。如果是从C++语言模块使用,则用C链接声明这些函数。如果使用此...
  • Object-c与c++差异

    千次阅读 2008-05-02 15:53:00
    Object-c与c++差异 单一继承:Objective-C不支持多重继承,(同Java和Smalltalk),而C++语言支持多重继承。 动态:Objective-C是动态定型(dynamicaly typed)所以它的类库比C++要容易操作。Objective-C 在运行时...
  • 有关C与C++的一些概念

    千次阅读 2009-07-08 12:03:00
    下面介绍一些有关C与C++的一些概念,也许对初学者有所帮助。诞生 :C语言诞生于1973年,它是在B语言的基础上发展而来。C++语言诞生于1983年,它是在C语言的基础上发展而来。它们同出一门,均属贝尔实验室研发。标准 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 69,156
精华内容 27,662
关键字:

c与c++

c++ 订阅