注册 登录
编程论坛 C++教室

[求助]只学了c++,却读不懂c

绝对冰点 发布于 2007-10-27 21:01, 1453 次点击

我是第一次接触编程,也就是第一次接触c++,但是我看到很多很多的程序都是用c写成的,我看不懂,应该如何才能通过c++理解c呢?
希望有经验的提供一下,谢谢。

22 回复
#2
neufcl2007-10-27 21:11
反了。人家都是用c来理解c++。先学c后学c++
#3
绝对冰点2007-10-27 21:18

可惜我就是还没学会走就想跑了阿..

#4
o0花生0o2007-10-27 22:28
c++就是包含类的c,会了c++,c语言自然不再话下
#5
travelling2007-10-27 22:38
   c 和C++的思想不通,如果你学了C然后学了C++,你会发现他们在语法上没有多大变化,关键是你没有学C就学C++,你就难以区分哪是C哪是C++。建议你先学C。
#6
永夜的极光2007-10-27 22:58

c++前面的基础部分,都是c的内容,怎么可能看不懂c呢?说说看,哪里你看不懂?

#7
valentineyzq2007-10-27 23:54
估计也就是看不懂输入输出语句吧?我也是先学C++再接触C的。感觉上C的安全性比C++高,但没C++省心。
#8
雨中飞燕2007-10-28 00:22
不太可能



by 雨中飞燕 C/C++学习讨论群:46520219
[url=http://yzfy.org/]C/C++算法习题(OnlineJudge)论坛:[/url] http://yzfy.programfan.com

[url=http://bbs.bc-cn.net/viewthread.php?tid=163571]请大家不要用TC来学习C语言,点击此处查看原因[/url] [url=http://blog.programfan.com/article.asp?id=24801]请不要写出非int声明的main函数[/url]
[url=http://bbs.bc-cn.net/viewthread.php?tid=162918" target="_blank">https://yzfy.org/
Blog: http://yzfy.programfan.com

[url=http://bbs.bc-cn.net/viewthread.php?tid=163571]请大家不要用TC来学习C语言,点击此处查看原因[/url] [url=http://blog.programfan.com/article.asp?id=24801]请不要写出非int声明的main函数[/url]
[url=http://bbs.bc-cn.net/viewthread.php?tid=162918
]C++编写的Windows界面游戏[/url]
#9
snipered2007-10-28 01:01
c和c++差不多!
应该说c++比c要简单!
不过c比c++要繁琐!
c和c++都是面向结构的!
c是基本语言哦!
推荐谭浩强的c语言设计!
#10
leeco2007-10-28 01:08
看一下printf和scanf的详细使用方法即可。
#11
jzwise2007-10-28 10:56

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

#12
nuciewth2007-10-28 11:06
C++前段部分都是重复介绍C的大部分内容(输入输出被替换了).
#13
给冰加温2007-10-28 17:28
我先学C的,现在自学C++,语法规则是基本一样的,而且C++兼容C的,可能你用C++习惯了,部分C的函数在C++中比较少用
#14
孤魂居士2007-10-28 18:05

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






#15
学c2007-10-29 09:44
孤魂居士总结的不错啊,我给你顶一下。
#16
valentineyzq2007-10-29 13:06
我也顶孤魂居士的总结。
#17
miaomiao04032007-10-29 21:16
先学习c吧
#18
绝对冰点2007-10-30 22:31

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

#19
jzwise2007-10-31 13:54

顶14楼~

#20
yangzhks2007-10-31 14:22
我也觉得c++简单些,有的c我也看不懂,不过很多是一样的。
#21
冰烨2007-10-31 15:31
学C++不就是要学面向对象嘛,这之前最好先学习面向过程的...也就是学C的....
仔细学的话是没啥问题....
#22
中学者2007-10-31 17:20
不会啊,我也是没学C就学的 C++,但是看C的还是看得懂啊,而且还比较清楚~~~~除了C++中已经不用的一些东西,例如mallco,free etc.
#23
孤魂居士2007-11-03 23:12
以下是引用yangzhks在2007-10-31 14:22:09的发言:
我也觉得c++简单些,有的c我也看不懂,不过很多是一样的。

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

1