用纯粹的C语言能实现面向对象编程吗?

我想自学编程,喜欢C语言,不要劝我换语言。我想知道纯粹的C语言能否方便的使用面向对象思想。同学说面向过程与面向对象就像数学排列组合里的分步与分类,那么应该与语言功能关系不... 我想自学编程,喜欢C语言,不要劝我换语言。
我想知道纯粹的C语言能否方便的使用面向对象思想。
同学说面向过程与面向对象就像数学排列组合里的分步与分类,那么应该与语言功能关系不是很大咯?能否方便地使用面向对象思想,有这方面的教材最好。
展开
 我来答
吉祥二进制
高粉答主

推荐于2017-09-12 · 科技改变生活,生活改变科技。
吉祥二进制
采纳数:33926 获赞数:84583

向TA提问 私信TA
展开全部

当然可以!


面向对象本身是一种思想,而用哪种语言实现只是一种技术手段。事实上思想和技术的关系本身就是class和object的关系。

class oo {
//这是面向对象的思想类
}; 
oo java; //java是oo的一个具体的技术实现
oo cxx; //c++是oo的一个具体的技术实现

拿Windows系统来讲,它是有C语言编写的,但是使用的却是面向对象的思想,这方面可以参考reactos(一个免费开源的用于大学教授操作系统原理的windows系统)。


举一个例子也许更实际一些,比如,操作系统有两种操作界面,一种是GUI界面,一种是控制台界面,在windows平台上编写一个程序,在cmd中运行时,执行控制台界面的代码,在GUI中运行的时候,执行图形界面的代码。这实际上也算是一种面向对象编程中的多态实例。以下示例代码在vc6.0编译通过。

#include <stdio.h> 
#include <tchar.h>
#include <windows.h>
#include <TLHELP32.H>
char what_shell_run()
{
HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hSnap==0){
return _T('E');
}
PROCESSENTRY32 pe32 = {0};
pe32.dwSize = sizeof pe32;
DWORD dwSelfPid = GetCurrentProcessId();
DWORD dwParentPid = ~0;
for (BOOL bLoop=Process32First(hSnap, &pe32); bLoop!=FALSE; bLoop=Process32Next(hSnap, &pe32))
{
if (dwSelfPid==pe32.th32ProcessID){
dwParentPid = pe32.th32ParentProcessID;
break;
}
}
if (dwParentPid==~0) return _T('U');
for (bLoop=Process32First(hSnap, &pe32); bLoop!=FALSE; bLoop=Process32Next(hSnap, &pe32))
{
if (dwParentPid==pe32.th32ProcessID){
if (lstrcmpi(pe32.szExeFile, _T("cmd.exe"))==0)
{
CloseHandle(hSnap);
return _T('C');
}else if (lstrcmpi(pe32.szExeFile, _T("explorer.exe"))==0){
CloseHandle(hSnap);
return _T('G');
}
}  
}
CloseHandle(hSnap);
return _T('U');
}
void console(void) {
printf("这是一控制台程序\n");
}
void gui (void) {
MessageBox(0, _T("这是一个GUI程序"), _T("GUI"), MB_OK);
}
int main()
{
char ch = what_shell_run();
switch (ch)
{
case 'C':
console();break;
case 'G':
gui(); break;
}
return 0;
}

在cmd中运行该程序的结果:

在GUI界面运行该程序的结果:

yao541978
2009-06-19 · 超过20用户采纳过TA的回答
知道答主
回答量:65
采纳率:0%
帮助的人:0
展开全部
面向对象编程都是累积在前人已经做好的一整套接口和类的基础上,就相当于文言文和现代汉语一样,我们看现代汉语能一看就懂,而面向对象编程语言就相当于现代汉语。c语言将相当于文言文。这只是类比一下。反正c要实现面向对象编程的话,估计不是一己之力能实现的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
taskingLife
2009-06-19 · TA获得超过514个赞
知道小有建树答主
回答量:480
采纳率:0%
帮助的人:403万
展开全部
不支持面向对象编程,不然C就变成C++了,C只能面向过程。
要学面象对象,可先学C后学C++。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友a108ca1f0
2009-06-19 · TA获得超过228个赞
知道答主
回答量:176
采纳率:0%
帮助的人:117万
展开全部
请搜索"C语言 面向对象"
很多人研究这个.
但是我觉得没意思.
我是C,C++,汇编都学过,目前是做unix开发.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
竭铭Oh
2009-06-19 · TA获得超过161个赞
知道答主
回答量:334
采纳率:0%
帮助的人:257万
展开全部
用C++
C++是c语言基础上的升级语言,基本语法类似
————————————————————
个人感觉面向对象是一种思想,跟语言没什么关系
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式