| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1453 人关注过本帖
标题:[求助]只学了c++,却读不懂c
只看楼主 加入收藏
jzwise
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2007-10-22
收藏
得分:0 

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

2007-10-28 10:56
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
C++前段部分都是重复介绍C的大部分内容(输入输出被替换了).

倚天照海花无数,流水高山心自知。
2007-10-28 11:06
给冰加温
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2007-3-9
收藏
得分:0 
我先学C的,现在自学C++,语法规则是基本一样的,而且C++兼容C的,可能你用C++习惯了,部分C的函数在C++中比较少用
2007-10-28 17:28
孤魂居士
Rank: 2
来 自:老A(中国地大)
等 级:论坛游民
威 望:4
帖 子:1142
专家分:18
注 册:2007-5-21
收藏
得分:0 

没有什么不习惯的 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







准备用3年做个高级软件工程师 10年也做不成。准备用10年做成高级软件工程师 3年就成了QQ 群 45771086
欢迎版主...欢迎JAVA爱好者...
一起从深夜 到凌晨...
2007-10-28 18:05
学c
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2007-9-17
收藏
得分:0 
孤魂居士总结的不错啊,我给你顶一下。
2007-10-29 09:44
valentineyzq
Rank: 1
等 级:新手上路
威 望:1
帖 子:69
专家分:0
注 册:2007-8-21
收藏
得分:0 
我也顶孤魂居士的总结。

我的世界曾经下过一场倾盆大雨。
2007-10-29 13:06
miaomiao0403
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2006-8-22
收藏
得分:0 
先学习c吧
2007-10-29 21:16
绝对冰点
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2007-9-13
收藏
得分:0 

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

2007-10-30 22:31
jzwise
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2007-10-22
收藏
得分:0 

顶14楼~

2007-10-31 13:54
yangzhks
Rank: 2
等 级:论坛游民
威 望:3
帖 子:1135
专家分:13
注 册:2006-10-27
收藏
得分:0 
我也觉得c++简单些,有的c我也看不懂,不过很多是一样的。
2007-10-31 14:22
快速回复:[求助]只学了c++,却读不懂c
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013257 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved