C语言魅力何在

作者&投稿:贾文 (若有异议请与网页底部的电邮联系)
在大学学C语言能干什么?有什么用?最妤举些易明白的例子~

学了总没有坏处的,出来工作了,至少你不编程吧,别人说你还是听得懂,不至于盲
C语言的基本语法我是不打算再提了,很多C语言编程的书,就是将一些基本的数据类型、数据结构、语法,然后就是一些数值

计算的实例,大多数都是雷同的,难免有抄袭之嫌,而且页没有多少实用价值。

本书以实用实例作为编程指导,指引大家编写真正实用的程序。了解到大家对黑客程序、病毒、窗口类程序比较感兴趣,因此我就拿这些实例进行讲解。基于大家基本都用Windows XP SP3,我也就在这个系统上把程序调试成功后再给大家讲解。编程环境,我还是喜欢VisualC++ 6.0

本书计划从四个大的方面来讲,这四个方面是:窗口类、文件操作类、网络类、数据库类。
都是时下流行的编程必备技术,也是软件开发者,必须掌握的技术。中间以实例讲解,逐步学习,相信大家看完后会有很大的提高的。




第一章窗口类程序的编写

这一章就先来讲解下窗口类程序的编写。因为现在程序没有界面,就像人没有脸面一样,而且好的界面更能吸引人。从基本的界面开始,相信能给大家指明出一条路的,使大家很容易地掌握窗口序的编写。其实界面设计利用VC 6.0 的MFC,很容易地制作出来。这里从底层开始写代码来写界面程序,使大家知道一些底层的东西,为以后学习打下好的基础,相信您学了这些,再用VC 的MFC会得心应手的。


1.1

用 C 写的第一个一个窗口程序

作为编程的开始,我们还是以一个Hello World来开始我们的学习之旅。代码如下:

#include

void main()
{
printf("Hello World!");
}

这是一个再简单不过的C程序了,只要有点C语言的知识就能够懂的,不过这里估计还有些人,到现在还不知道#include

中的头文件stdio.h到底是什么东西,我就来说下了,stdio.h是一个文本文件,存在于磁盘上的,已VC为例它的位置如下图:

也许你听说过printf()函数是在stdio.h中预定义的,但是你见过其定义的形式没有,没有且看下图

其定义形式,就如图中所示,也许你并不懂前面那些东西是什么,不用担心,以后我会慢慢解释给大家的。函数是先定义才能使用的,所以stdio.h中定义printf函数,我我们在引用了stdio.h头文件后就可以在程序中调用printf函数了。

上面是在命令行中显示一个“Hello World!”,没什么意思,下面我写一个窗口程序,显示个Hello World!
#include
void main()
{
MessageBox(NULL,"Hello World!","我的第一个窗口程序",MB_OK);
}
编译运行后如下图:

弹出的是一个对话框,上面有Hello World,还有一个标题和一个“确定”按钮。
当然你会说这对话框也算个窗口吗?这里肯定的告诉你:是的,对话框是窗口程序的一个子集。你可能还会这样问,这样一个简单的窗口有啥用呢,其实这样的窗口非常有用,我们在操作计算机的时候,会出现一些警告或提示的对话框,都是基本是这种方法写出来的。就算是这个很简单,学习本来不就是有易向难,有浅显深奥去的过程吗。
整个效果几乎就是靠一个函数MessageBox的功劳。这里也先不介绍这个函数了,说些其他的。

其实用C编写一些恶程序,就是把编程环境中所提供的一些函数熟悉了基本就可以了。用VC来写成序,其中的头文件有很多,定义了很多Windows API 函数、数据结构、宏,可以让我们大家运用,通过它们,我们可以快速开发出使用的程序。这些Windows API在微软的MSDN上查,上面有很多说明,部分还有代码示例。不会是可以输入函数名,查找相关信息,建议大家用英文版的Library,因为其内容比中文版的全面,英语不好的同学呢,就先看中文了
中文MSDN:http://msdn.microsoft.com/library/zh-cn/
英文MSDN:http://msen.micorsoft.com/library/en-us/

到这里,我们就完成第一个有界面程序的编写,你感觉写有界面的程序难吗?显然不难。

下面看一个向锋和波波感兴趣的程序:九九乘法
采用命令行形式
#include “stdio.h”
int i=0,j=0;
for(i=1;i<10;i++)
for(j=1;j<i+1;j++)
printf(“%d*%d=%d”,j,i,j*i);
printf(“
”);
和那个javascript效果都是一样的,所以语言只要学好一样,其他的就很容易旁通的,学习就捡一种学好,不要贪多。

好的,这一节就这样吧,大家先各自了解下微软的MSDN,对以后的学习会有很大的帮助的。


1.2 第一个真正的窗口程序

上一节中,我们用MessageBox函数轻松地实现了一个对话框窗口,可能你会说,那仅仅是个没有用的对话框而已,是的,只是对话框而已。我之所以以一个对话框为例呢,是因为我只是想让你知道写一个有界面的程序并不是件难办的事。明白了这一点后,我们继续。今天来编写一个真正的窗口程序。
下面就该罗嗦一段了,由于大家以前并没有写过什么窗口程序,写的都是命令行下的,我们知道在命令行下的程序都有一个主函数main,这个函数也就是程序的入口函数。我们现在用VC 6.0来写,而且要写窗口类程序,VC 6.0给我们提供了一个专门用作窗口类程序的入口函数WinMain()
这个函数原型是这样的
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTRlpCmdLine,
int nCmdShow
);
大家是不是感觉这个函数挺复杂的,有这么几个参数,而像main好像就没有参数。其实main是有参数,这个向锋和小四是知道了的。但是main函数的参数是可以省略的,而WinMain是不可以省的。这里也要对VC6.0的编译模式改下
看下图

依次是“工程”→“设置”→“连接”,在“工程选项”里把console改为windows就可以了。如果认真学了汇编,或是手写命令编译连接过C程序,就会知道这是干什么的。Console是控制台的意思,以前我们用mian函数写的程序都是以控制台模式连接的,所以很少会有界面的。现在我们要写有界面的程序,所以要选Windows(窗口)模式了。

我们写入以下代码,并按照上面说的方法去做,看看结果
#include "windows.h"

int WINAPI WinMain(HINSTANCEhInstance,
HINSTANCE hPreInstance,
LPSTR lpCmdLine,
int nShowCmd)
{
MessageBox(NULL,"WinMain创建的窗口程序","WinMain",MB_OK);
return0;
}
结果如下图:

与第一节中的这段代码代码比较下
#include “windows.h”
void main()
{
MessageBox(NULL,"Hello World!","我的第一个窗口程序",MB_OK);
}

两者比较下,后者多了个cmd窗口。可见用main写的并没有完全脱离命令行呀。所以以后我们写窗口程序就用winmain了。

好了,转过来,我们来看看WinMain()函数,其中有4个参数
先看下解释(看不明白得先看完):
hInstance:应用程序当前事例的句柄。
hPrelnstance:应用程序的先事例的句柄。对于同一个程序打开两次,出现两个窗口第一次打开的窗口就是先前实例的窗口。对于一个32的位程序,该参数总为NULL。
lpCmdLine:指向应用程序命令行的空字符串的指针,不包括函数名。获得整个命令行,参看GetCommandLine。
nCmdShow:指明窗口如何显示(是隐藏还是显示,有没有最大化按钮之类的)。取值可以参考MSDN
这里我相信有一个词大家好应该比较陌生,句柄(HANDLE)是吧。下面我就来简单的说下
句柄其实就是Windows系统中一个东西的唯一标识。就是系统中有很多运行的程序或者资源之类的,为了更好的管理使用,Windows系统给它们每人一个ID一样。懂得网页制作的人应该知道网页中各个元素的ID吧,网页的ID如果重复话可能出现错误。那么系统的句柄会不会有相同的,那是肯定不会有的了,就和我们的学号一样,系统自动分配每一个模块的句柄,是不会相同的了。

对于句柄大家可以先这样理解着,不用一下子搞懂得。以后学着学着就明白了。

估计大家对那几个参数的类型改犯迷糊了吧。其实那几个类型,并不是什么新类型,都是Windows开发人员为了自己和他人编程方便,同过基本的C语言语法定义一种新的结构体,或者是共同体,再者就是枚举类型。我知道结构体、共同体和枚举类型,很多老师是没有讲到的,因为在书的后边,很多教C的,又是很垃圾的老师,所以不会讲那么快的。其实结构体这些数据类型,就是通过我们常用的字符、整型、浮点等数据类型构造一个比较复杂的类型而已,举个例子,就是我们知道C没有一个数据类型可以描述一个人吧,那么我构造一个是不是很方便我们编程呢。我们可以这样构造一个
struct People
{
intage;//年龄
charsex[2];//性别
intheight;//身高
……
}
我们这样定义以后就可以在我们以后的程序中利用这个数据类型了,People zhangsan;把zhangsan的身高172放到zhangsan.height中。这样可以方便完成很多工作。所以结构体是很简单的,还有其他的复杂数据类型也是很简单的,都是有常用的简单的类型来结合到一起构造一个复杂的而已。这和JAVA定义类是很相似的,java定义个人类,不是可以这样的
public class People
{
publicint age;
publicstring sex;
publicheight;
……
}
看起来都差不多,而且用法也很相像。唯一的差别其实就是类可以有方法,而结构体是没有的(经过特殊处理也是可以的,这里不用考虑)。

上面是为了让大家了解下复杂数据类型的定义,罗嗦了一大堆。下面来看下WinMain中第一个参数的类型HINSTANCE这个只是个结构体而已,实际上和HANDLE这个类型差不多,但是有一点差别,而HANDLE是这样typedef PVOID HANDLE;定义的,PVOID是什么呢,我们来看下typedef void *PVOID;说明PVOID是一个指针,初始指向空(void)。因此可以知道句柄也是个指针而已。看着这么复杂原来也只是指针。
这些都可以在微软的msdn上查得到的,而且很详细的
那个第二个LPSTR 根据字面上的意思就知道是字符串类型了。查一查果然是。

大家一定要利用好msdn,很有用的。

本节就到此结束了,主要是说明了一个WinMain函数和结构体的事情,东西也不算太多,大家应该能接受得了吧。下节就来点复杂点深点的东西,希望大家做好心理准备。


1.3 窗口程序的编写


在来啰嗦之前,希望大家能够做好准备,这一节知识有点多,内容有点长。但愿大家能够一口气读完,如果一口气读不完,那就换口气接着读。

上节中我们用MessageBox()就实现了一个真正的窗口。MessageBox()中的原型如下:
Int MessageBox(HWND hWnd,
LPCTSTRlpText,
LPCTSTRlpCaption,
UINT uType);
参数解释
hWnd 所属对话框所属窗口的句柄,如果是NULL,则此对话框不属于任何一个窗口。
lpText 对话框窗口的显示内容。
lpCaption 对话框窗口的标题。
uType 对话框的样式和动作(像是确定按钮,还是取消按钮就是设置这里的)

关于这个函数的细节可以看这里
http://msdn.microsoft.com/en-us/library/ms645505(VS.85).aspx

到此为止,你也算是会了窗口程序的编写,但只是一个开始,不过这已经很好,可能会让你感觉到了C的魅力,也可能会稍微解点C语言能干什么的疑惑。在开始写代码之前,我有必要把细节和原理先说明下。
Windows下一个窗口创建的过程有以下几个步骤:

1. 程序创建一个窗口,首先要向Windows系统注册一个窗口类wndclassex,其实就是定义一个变量,变量的类型是WNDCLASSEX(结构体)。该结构体的定义与介绍看这里(http://msdn.microsoft.com/en-us/library/ms633577(VS.85).aspx),
typedef struct {
UINT cbSize;
UINT style;
WNDPROC lpfnWndProc;
int cbClsExtra;
int cbWndExtra;
HINSTANCE hInstance;
HICON hIcon;
HCURSOR hCursor;
HBRUSH hbrBackground;
LPCTSTR lpszMenuName;
LPCTSTR lpszClassName;
HICON hIconSm;
} WNDCLASSEX, *PWNDCLASSEX;

成员介绍
cbSize 值为sizeof(WNDCLASSEX),在调用GetClassInfoEx前必须要先设置它值。


style 窗口类的样式,它的值可以是窗口样式值的任意组合。
可以有以下的值
lpfnWndProc 指向窗口处理函数(回调函数)。处理窗口事件,像单击鼠标会怎样,右击鼠标会怎样,都是由此函数控制的。
cbClsExtra 为窗口类的额外信息做记录,系统初始化为0。
cbWndExtra 记录窗口实例的额外信息,系统初始为0.如果程序使用WNDCLASSEX注册一个从资源文件里创建的对话框,则此参数必须设置为DLGWINDOWEXTRA
hIcon 窗口类的图标,为资源句柄,如果设置为NULL,系统将为窗口提供一个默认的图标。
hCursor 窗口类的鼠标样式,为鼠标样式资源的句柄,如果设置为NULL,系统提供一个默认的鼠标样式。
hbrBackground 窗口类的背景刷,为背景刷句柄,也可以为系统颜色值,如果颜色值已给出,则必须转化为以下的HBRUSH的值
· COLOR_ACTIVEBORDER
· COLOR_ACTIVECAPTION
· COLOR_APPWORKSPACE
· COLOR_BACKGROUND
· COLOR_BTNFACE
· COLOR_BTNSHADOW
· COLOR_BTNTEXT
· COLOR_CAPTIONTEXT
· COLOR_GRAYTEXT
· COLOR_HIGHLIGHT
· COLOR_HIGHLIGHTTEXT
· COLOR_INACTIVEBORDER
· COLOR_INACTIVECAPTION
· COLOR_MENU
· COLOR_MENUTEXT
· COLOR_SCROLLBAR
· COLOR_WINDOW
· COLOR_WINDOWFRAME
· COLOR_WINDOWTEXT
lpszMenuName 指向一个以NULL结尾的字符床,同目录资源的名字一样。如果使用整型id表示菜单,可以用MAKEINTRESOURCE定义一个宏。如果它的值为NULL,那么该类创建的窗口将都没有默认的菜单。
lpszClassName 窗口类的名字,字符串类型。
hIconSm 小图标的句柄,在任务栏显示的图标,可以和上面的那个一样。

定义一个WNDCLASSEX类型变量后,在给变量成员初始化后,我们就可以用
RegisterWindowEx(&wndclassex)来注册这个窗口类了。

这个注册过程,就和我们平常创建一个项目一样,都要先注册才能创建。

如果在类型后面的话,就是定义数组a大小维度10的意思。比如 int a[10] 就是定义整型数组a,大小10个整型数据大小(1个int占 4字节的话,就是占40个字节大小的内存)。
如果是在表达式中,比如 a[10]=1; 这里a[10]就表示a数组第11个元素(数组下标是从0开始的,10就是第11个元素)。 a[10]=1就是给该元素赋值1,同理如果在等号右边就是取a[10]的值。
另外 &a[10] 表示a[10]元素的地址。 a表示a数组首地址常量,相当于&a[0]。

现在总的来说语言的两大体系就是C语系与微软的Visual Basic语系。

学好C语言后,将来学习C语系的任何一款语言你会感觉很上手,比如说,Java,C++,PHP...。

但是,如果你只是想学习C++的话,那么你大可不必先学习C语言然后在学C++。

这样做并不是说没有好处,只是将来你会花费一些时间去忘掉C(面向过程)从而接受C++(面向对象)。两者虽说相通,但却是着不同的概念。

至于说过级考试,C和C++现在用的都是Visual C++编译器了。

唉,说到计算机过级,我就伤心咯,我今年9月20日考完,我机试满分(100分,考试都是用VC++6.0软件哦,不用TC嘻,简单)但机试不及极(55分),在这里,不是说笔试难,只是笔试不单是只考C语言的,还要考计算机二级基础的(占30分吧),就今年的调查来说(编程语言流行程度),JAVA排第一,C语言就排第二了,C++排第三啊,VB排第四啊 我了解你的心情,我也学过VB,VB比C好玩多了,但C是很重要的
我是学电子的,下学期要学单片机(嵌入式开发),所以我们只要学C语言就能应付了,不用C++的,但要一点汇编语言,,,,好了不说了,GOOD LUCK

底层操作 速度快 安全


语言的魅力是什么
一、语言的魅力在于其多样性和表达力。它能够连接人与人之间的心灵,传递情感、思想和知识,激发共鸣,产生深远的影响。二、1. 表达情感的魔力 语言作为情感的载体,能够直接触动人们的内心。通过文字,我们可以传达喜怒哀乐,让接收者感受到发送者的情绪。一段温馨的问候、一句真诚的道歉、一篇感人的故事...

语言的魅力有哪些
一、语言的魅力在于其表达能力和交流能力。二、1. 传递信息与情感 语言是人类最重要的交流工具,通过语言,我们可以传递各种信息,表达复杂的情感和思想。无论是喜怒哀乐,还是对生活琐碎事物的感慨,语言都能精准地传达,让人们在沟通中增进理解,加深感情。2. 丰富多彩的表达方式 语言具有丰富的词汇和多...

语言魅力有哪些
语言魅力有以下几个方面:1.表达力:语言能够准确地传达思想和情感。通过文字,我们可以向他人表达我们的观点、感受和意图。清晰、简洁、有力的表达能够深入人心,引起共鸣。2. 沟通桥梁:语言是人际间沟通的桥梁。它能够连接不同文化背景、不同社会地位的人们,使他们能够相互理解、交流思想。语言的力量在...

语言的魅力
语言的魅力无处不在,它可以让我们更好地理解世界,更好地与他人交流。魅力1:让我们更好地理解世界 语言是人类思想的表达工具,通过语言,我们可以更好地理解世界。不同的语言有不同的表达方式,可以让我们从不同的角度来看待问题。魅力2:让我们更好地与他人交流 语言是人类交流的工具,通过语言,我...

语言的魅力是什么
1.语言的魅力可以体现一个人的学识、修养和内涵,使人感到亲切,对你产生好感、重视,甚至敬佩。2.语言缺少了智慧,便如同大地少了阳光,多了些许暗色,少了些许明媚;就象佳肴少放了盐,枯燥乏味,人们便失去了欣赏的乐趣。只有智慧的语言,才耐人寻味。关于语言的名言 1,语言是思想的图像和反映。 -...

语言的魅力是什么
语言的魅力在于讲出的话语让人舒服。说出的赞美,是发自内心的,让别人欢心;表达出的忧虑,来自内心,让他人感受到真诚;指出的问题,有理有据,让他人信服。

语言的魅力体现在什么地方?
语言的魅力体现在很多方面,比如它可以传达情感、表达思想、传递文化等等。语言可以让人们更好地沟通和交流,也可以让人们更好地理解彼此。此外,语言还可以激发人们的想象力和创造力,让人们更好地欣赏文学作品和艺术作品。总之,语言是一种非常神奇的东西,它有着无穷的魅力。

语言艺术的魅力有关语言艺术的魅力
1、语言的艺术魅力在于完美的语言表达能力。2、语言能力具体指用词准确,语意明白,结构妥贴,语句简洁,文理贯通,语言平易,合乎规范,能把客观概念表述得清晰、准确、连贯、得体,没有语病,得体、清晰、连贯;概括、简洁、精炼;准确、贴切、犀利;生动、含蓄、明快;观点鲜明、是非清晰、褒贬明确。3、...

语言的魅力
在历史的舞台上,周恩来总理以“对牛弹琴”的机智回应,既反击了对手,又展示了中国人的智慧与幽默,让语言的魅力在对话中熠熠生辉。最后,语言是智慧的结晶,是人类心灵的桥梁。它超越了种族和地域,承载着人类的情感、理念和梦想。无论是汉语的深沉内敛,还是英语的直接明了,每一种语言都是文化瑰宝,...

语言的魅力,中心思想。
语言的魅力在于它是人类交流、表达思想和感情的主要工具。语言不仅具有清晰、准确和富有表现力的表达能力,还能够传达微妙的情感和复杂的想法。此外,语言也是人类文化的重要组成部分,不同的语言和文化背景反映了人类社会的多样性和丰富性。中心思想是一个文本的核心,它通常在文章的开头、结尾或段落中明确...

延寿县13646553972: C语言魅力何在
台宁吉优: 现在总的来说语言的两大体系就是C语系与微软的Visual Basic语系.学好C语言后,将来学习C语系的任何一款语言你会感觉很上手,比如说,Java,C++,PHP....但是,如果你只是想学习C++的话,那么你大可不必先学习C语言然后在学C++.这样做并不是说没有好处,只是将来你会花费一些时间去忘掉C(面向过程)从而接受C++(面向对象).两者虽说相通,但却是着不同的概念.至于说过级考试,C和C++现在用的都是Visual C++编译器了.

延寿县13646553972: C语言编程有什么优势 -
台宁吉优: C语言很牛逼的,要知道,像现在的java,.net,最终都离不开C/C++的,操作系统也要用C写. 表现形式是,能操作硬件(嵌入式开发等等),性能高(编译型的),语法精简(没有过多的语法约束,没有复杂的面向对象). 缺点是比较难用 本人正在从.net转C++,希望楼主努力,成为一名高手. 附:由于C/C++功能强大,难度也大,所以工资自然也普遍的高一些.

延寿县13646553972: C语言有什么独特的优势?
台宁吉优: C语言执行效率高,仅次于汇编 硬件支持良好,现在的嵌入式开发普遍使用C语言 可移植性好,很多操作系统都支持C语言.一个C源程序,只需修改很少的部分,就可以在另一个操作系统下运行

延寿县13646553972: C语言有哪些优势?
台宁吉优: C语言是一种面向过程的基于模块的语言.一般用在和汇编混和编程的嵌入式开发或者较低层的驱动程序开发,操作系统设计.开发周期长,代码维护成本高,可移植性差,但是程序运行效率高,可以更直接的控制硬件.举个例子:Firefox,可以说是最流行的优秀浏览器,它所用的语言就是C语言

延寿县13646553972: 学习C语言有什么用 -
台宁吉优: 1.学校开的C语言学完了可以过计算机二、三级啊,然后就可以拿毕业证了啊. 2.学了C语言你就算了解了一门程序语言啊,以后你要学的深可以去做操作系统啊,工资高的发紫啊.也可以写驱动程序啊. 还可以转型到其它面向对象的语言搞系统开发、游戏开发、手机开发等等...你说好不好?一个字:帅到掉渣!

延寿县13646553972: C语言有什么用?
台宁吉优: 第一,C是面向过程语言,Java是面向对象语言. 第二,C通过windows平台下编译的话,是直接运行在windows平台下的,而Java始终是运行在他的虚拟机之上的,所以,理论上C能做一些相对于比较底层的工作,举个例子,Java就不能编写Windows病毒. 第三,如果要利用编程来做一些windows优化工作的话,建议还是利用C.

延寿县13646553972: C语言在哪最常用?
台宁吉优: C语言在单片机、嵌入式等方面最常用,在计算机上也有一定范围的用途,只是现在工具多了,选择也多了,C语言的魅力却依然非常高.

延寿县13646553972: C语言实不实用?
台宁吉优: 因为C语言比较接近硬件,又能做到汇编语言的高效率,又比汇编语言更接近于自然语言.也就是说更好懂,所以C语言一直接以来都有广泛的应用,目前,C语言主要应用在嵌入式开发,低级操作系统(比如类似于linux的NOS操作系统)上应用程序的开发,还有可以写一些简单的应用软件,LINUX和UNIX都是很C写的,C还是很有用处的,也得到了很广泛的应用,所以潜力也大!

延寿县13646553972: c语言什么意思 -
台宁吉优: C语言是一类编程语言,1972年诞生于美国的贝尔实验室. 就学习编程语言来讲,建议先学习C语言,很多语言都是在C语言的基础上发展起来的,个人认为C语言的魅力在于指针,你能够精确到控制每一个字节,因此效率是其它语言无法比拟的,所以很多操作系统底层都是C写的. 如果想学这个的话,得有兴趣,然后勤练多思考.

延寿县13646553972: C语言学了有什么用处?
台宁吉优: C语言的主要用途是用来编写应用软件和系统软件,同时还非常适合于教学. C语言与其他语言的异同: C语言是处于汇编语言和高级语言之间的一种记述性程序语言,C语言比较靠近硬件和系统,它既有面向硬件和系统,像汇编语言那样可以...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网