喜悦国际村 » JAVA/C/C++ » 送给C++新手的建议之谈

页: [1]
xieaotian2007-11-17 12:35 AM
送给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呢?说说看,哪里你看不懂?

七楼:估计也就是看不懂输入输出语句吧?我也是先学C++再接触C的。感觉上C的安全性比C++高,但没C++省心。

八楼:不太可能

九楼:c和c++差不多!
应该说c++比c要简单!
不过c比c++要繁琐!
c和c++都是面向结构的!
c是基本语言哦!
推荐谭浩强的c语言设计!

十楼:看一下printf和scanf的详细使用方法即可。

十一楼:咱也是直接接触C++的啊
没有C基础.
看来还是的先努力补补C的内容了啊~

十二楼:
C++前段部分都是重复介绍C的大部分内容(输入输出被替换了).

十三楼:我先学C的,现在自学C++,语法规则是基本一样的,而且C++兼容C的,可能你用C++习惯了,部分C的函数在C++中比较少用


十四楼:没有什么不习惯的  C和C++本来就是一个母亲
习惯了C++  习惯C也很好懂
   最明显的 就是输入输出语句不同``、
其他的就是
....什么申请动态内存空间  和释放内存空间语句不同、、
还有````C++后程讲到了类对象``
C++前面几章和C一样



C++和C的不同点
1.C++比C多了一种注释方式:双斜杠注释一次可注释一行.
        例:
        int i;
        i=0;
        // 这一行是注释,下一行将i加一.
        i++;
2.在C++中,变量可以随时处定义,而在C中必须在程序和函数的开始处定义.
        例:
        /*这里是C的例子*/
        int i;
        for(i=0;i<10;i++);
        //如果是C++可以将i在用时再定义.
        for(int i=0;i<10;i++);
3.在C中声明一个struct结构,那么在用的时候要加上struct关键字,在C++中不需要.
*同样的,enum结构和union结构中也是如此.
        例:
        /*在C语言里*/
        struct st
        {int x,y;};
        /*用时:*/
        struct st myst;
        //在C++中可以这样
        struct st
        {int x,y;};
        //用时:
        st myst;
4.在C++中使用了新的IO库:iostream.h在C中只有stdio.h.
        例:
        #include <iostream>
        //IO操作例如:
        cout<<"Hello!!"<<endl;
5.在C++中函数可以被重载,C中不支持函数重载.在C++中函数参数可以省略和设置默认值.
        C和C++中对空参数和没有限制的参数的声明
        -----------------------------
        意义 |C |C++
        -----------------------------
        空参数 |f(void)|f()或f(void)
        -----------------------------
        无限制 |f() |f(...)
        -----------------------------
        例:C++的参数占位
        int func(CDC *);
        //一个技术特性:引用参数和值参数不能被编译器区分并同时重载
        //一个技术特性:重载时为了对传统链接器的支持而采用了函数名字编码,如果不想被编码:
        extern "C" int func(int i);//这个函数不会引被编码.
6.在C++中const不仅仅用来作为声明常量的关键字还可以修饰不能被改变的传入参数.
        例:
        int func(int i);
        //如果函数不需要改变i的值,那么函数可以用int func(const &i);来代替以提高运行速度.
7.void *指针中C中应用时不需要强类型转换而在C++中需要.
        例:
        void *p;
        int a;
        p=(void *)new int;
        a=*p;/*可C中可以这样.*/
        a=(int)*p;//在C++中必须这样.
8.在C++中空指针赋以0值表示空.在C中用(void *)0表示空.在C++里(void *)0不能赋值给任意指针,而可以将0赋值给任意指针.
        例:
        /*C*/
        #define NULL (void *)0
        int *ptr=NULL;
        //C++
        int *ptr=0;
        //一个技术特性:空指针在C++中要赋0值,而0一般会被编译器认作整数.如果有这样两个重载的函数
        //void func(int a)和void func(int *a)并且我想调用第二个函数,而这个参数需要是空值(也就是0)
        //那么实际上程序将会调用第一个函数.因为0优先被看作整数,而不是空指针,所以这种重载要避免.
9.在C++中,char和int就不像C里那样可以不分你我了.
        void print(char c);
        void print(int c);
        将是合法的两个不同的重载函数.
10.在C中enum变量可以被赋以整形值而不必进行强类型转换.在C++不行.
        例:
        eunm name(kexin,admin,root);
        /*在C中可以这么做*/
        eunm name n=2;
        //在C++中只能这样做:
        name n=(name)2;
        //在C++中可以这样:
        int i=kexin;//前面有集合定义.
        char a[admin]//不推荐.
11.在C++中全局变量可以动态初始化,在C中只有常量表达式才可以初始化全局变量,在C++中不是.
        例:
        int g_nnum=6;
        int g_ncont=cont();//这个用法只能在C++中.
        全局变量的初始化通常在main()之前运行
        动态全局变量初始化,可能会造成一些问题.在不同的转换单元里的全局变量初始化顺序不确定.
        控制这种初始化顺序需要很高的技巧.
        转换单元是C++编译器的基础.它是预处理完成之后的一个源文件.extern的全局变量可以在许多不同的转换单元中声明
        ,但是defined的全局变量只能在一个转换单元中声明.
12.C++中新加入的关键字:
        asm     class   delete  new             private         public  throw          try
        catch   friend  inline  operator        protected       this    template       virtual
        ------------------------------------------------------------------------------------------
        bool            explicit        namespace               true    using
        const_cast      false           reinterpret_cast        typeid  wchar_t
        dynamic_cast    mutable         static_cast             typename

十五楼:楼上总结的不错啊,我给你顶一下。

十六楼:是啊

十七楼:先学习c吧

十八楼:大体上能看懂.
c中的建立链表好像很难的感觉,它用了好像malloc,但是这个从来都没接触到过,学了编程,感觉很迷茫阿。

十九楼:我也觉得c++简单些,有的c我也看不懂,不过很多是一样的

二十楼:学C++不就是要学面向对象嘛,这之前最好先学习面向过程的...也就是学C的....
仔细学的话是没啥问题...

二十一楼:不会啊,我也是没学C就学的 C++,但是看C的还是看得懂啊,而且还比较清楚~~~~除了C++中已经不用的一些东西,例如mallco,free etc.

二十二楼:程序设计语言 自己的爱好 觉得那好学好懂就学哪吧``  不一定要强迫去学哪一种语言 一个题目  用同种思路不同种语言都是可以做出来的 我学了C 和C++ 自学了JAVA  我觉得就一点点不同 基本上程序设计语言都是相通的  这是我们数据结构老师说的

[[i] 本帖最后由 xieaotian 于 2007-11-17 08:58 AM 编辑 [/i]]


查看完整版本: 送给C++新手的建议之谈


Powered by Discuz! Archiver 6.1.0  © 2001-2006 Comsenz Inc.
Processed in 0.006289 second(s), 2 queries