设为首页收藏本站

SKY外语、计算机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7924|回复: 7
打印 上一主题 下一主题

[C] 详解c语言第一课之函数

[复制链接]

6

主题

0

好友

272

积分

中级会员

Rank: 3Rank: 3

性别
保密

最佳新人 活跃会员 热心会员 灌水之王 论坛元老

跳转到指定楼层
楼主
发表于 2012-6-8 12:49:53 |只看该作者 |倒序浏览
本帖最后由 sky_yx 于 2015-12-30 14:16 编辑

c语言是一门面向过程的语言,没有面向对象的那些复杂的类、继承、多态等一些复杂的概念,所以c语言并不难学,难的是用c语言实现这些复杂的东西,所以c语言的入门试比较容易的,而且学c语言有助于理解面向对象的概念,简单介绍完毕,下面开始c语言的学习。
一般学程序设计,最开始都是从一个HelloWorld程序开始,但是对于零基础又比较较真的人来说(就像我),很难理解这个HelloWorld程序是干什么的,我最开始接触编程,看的是一本c++的书,老厚的一大本,看了一个多月才明白这个HelloWorld是什么(好吧,你说我太笨了也行!)。所以,咱们从一段更简单的代码开始,比HelloWorld还简单!
  • main()
  • {
  • }

复制代码

这段代码的作用呢,就是什么都不做,或许严格的来说它并不算是一个程序源代码(但是它确实能通过编译,所以我认为它还算是一个程序),只能算是c源码的框架,每一个c源码都有这些东西,就好像每台电脑都有一块主板一样,其他的东西可以在它的基础上添加,但是没有它是不行的!这个main呢,它是一个函数,main(主)函数,这个函数跟数学上的函数是一样一样的,拿sin函数为例,单一一个sin是没有什么用的,要想让它为我所用,就得给它一个度数,比如说sin x,这个x就是sin的参数,在c语言中呢,参数要写在小括号里面,把这个sin x写成c语言形式就是sin(x)。
现在,咱们扩充一下咱们的代码:
  • main(void)
  • {
  • }

复制代码

这个void是什么呢,一会再说,现在先继续说咱们的sin,有了sin x还是不够的,咱们用它是为了得到咱们要的结果啊,所以,咱们还要给它后面加上一个值,sin x = y,这就像是那么一回事了,把这个改成c语言的形式呢,就是y sin(x),再扩充一下咱们的代码:
  • int main(void)
  • {
  • }

复制代码

越来越像一个真正的程序了!再继续给它扩,看这个大括号,里面还没东西,这次就在它里面添!添什么呢?咱们的sin函数是前辈们写好的,把sin x输入计算器,计算器就会给咱们一个y,但是这个main函数不行啊,它是咱们自己写的,所以,咱们要想得到咱们要的y,这个过程咱们得自己写,这个过程就要写在这个{}里面,继续扩充咱们的代码:
  • int main(void)
  • {
  •         return 0;
  • }

复制代码

现在它就更像一个真正的程序了,但是它还是什么也没做!
分析一下咱们加入的这些东西,首先是int,int是一种数据类型,计算机比较笨,要想得到咱们要的结果呢,必须告诉它咱们要的是整数还是小数,或者是一个英语单词,你要不告诉它它就不知道你要什么了,或许给你吐出一大堆0101二进制代码来,你就慢慢研究去吧,这个int呢就是告诉计算机,咱们要的是一个整数,int就是整数型,当然还有其他类型,比如后面的void类型,void这个类型比较好玩,它是一个空类型,就是没有,也就是说咱们的main函数不需要参数,你不给它x它也能给你吐出个y来!最后是这个return 0;,这个有点长,至少比前面那两个都长,一点一点的分析,先说return,百度一下return发现它是返回的意思(你要English比较好就不用百度了),返回了一个0,这个0是整数吧,跟咱们的int对上了,也就是咱们通过main函数的运算,最后main给咱们了一个结果,这个结果就是0。最后呢还有一个分号,c语言规定了,一句话的结束必须有个分号,否则它不知道你把一句话说完,跟咱们的。是一个意思!
现在咱们来用大白话翻译一下这个程序:
给main(主)函数一个void(空)参数,main函数经过了{}里的计算,最终return(返回)给我们一个整数型的值0。
更直白的咱们可以话个图来表示下:
如果你已经理解这段代码,恭喜你,虽然这只是c语言的一小步,但你却卖出了自己的一大步,写程序,都是在跟函数打交道,如果你明白它了,我可以说你已经学会一半了,这一半需要的是理解,而后面的一半呢,大部分需要记住,把后面的内容当做没事背几个英语单词就好了,而且这些英语单词大多数人大多数单词都学过,那学习起来当然小case啦!
还是继续扩充我们的代码,我们一直自己写函数是不行的,太麻烦了,所以,咱们要用前人写好的函数来为自己工作,来看一下经典的HelloWorld程序:
  • #include <stdio.h>
  • int main(void)
  • {
  •         printf("HelloWorld");
  •         return 0;
  • }

复制代码

哪个是函数看出来了吧,对,就是printf,给它的参数就是"HelloWorld",这个函数的作用就是把咱们给它的参数输出到屏幕上,但是你看结果会发现并没有输出"",这是为什么呢,因为这个双引号是告诉计算机咱们给它的是一个字符串类型的值,这个值就是""里面的内容,什么是字符串类型呢,就是多个字符类型构成的串,什么是字符类型呢,就是char类型,什么是字符,1234!@#$abcdABCD这些只要是你键盘能按上去的一个就是一个字符,在c语言里,字符要加'','1'就是一个字符,如果不加单引号1就是一个数字,如果将多个字符连起来组成一个串就叫字符串,字符串就得用""引起来,如果不加双引号就是……以后再说!
咱们可以看到printf左边没东西,咱们没得到它的返回值,难道它的返回值是void类型?想法很好,可惜是错的!printf有返回值,是int类型,可是我们用它呢,只是为了输出一个字符串,它的返回值对我们来说没什么用,所以就把它给“扔”了!
这段代码还多了一个#include <stdio.h>,它是干什么的呢?咱们知道,printf函数是前人写的,谁写的?c语言之父丹尼斯·里奇写的!他把它写到哪了?写在stdio.h这个文件里了!现在知道它是干什么的了吧!include是包含的意思,#include <stdio.h>就是把stdio.h包含进来,为什么要包含它?因为我们要用的printf函数在它那呢!
顺便说一下丹尼斯·里奇,他不仅仅是c语言之父,还是unix之父,对计算机编程语言和操作系统的发展做出了巨大的贡献,现在众多的语言包括c++、java、c#等都是以c语言为根基发展起来的,现在的linux、BSD、Mac OS等更是跟unix有着千丝万缕的联系,这位伟人以于2011年10月9日去世,让我们以c语言的形式来表达我们的哀思:
  • #include <stdio.h>
  • int main(void)
  • {
  •         printf("阿门!");
  •         return 0;
  • }

复制代码

我们在vc中编译运行这段程序后发现它后面紧跟着一句"Press any key to continue",它就是告诉我们随便按一个键就退出了,可是它紧跟在后面好难看,我们要让它另起一行显示,再一次的扩充我们的程序:
  • #include <stdio.h>
  • int main(void)
  • {
  •         printf("HelloWorld\n");
  •         return 0;
  • }

复制代码

加了一个"\n",这个"\n"的作用就是换行,因为在程序里直接敲一个Enter是起不到我们想要的作用的,只能得到编译器给我们的错误报告,所以我们用一个"\n"替代Enter起到换行的作用,"\n"的专业术语叫做转义字符,转义字符当然不是只有这一个,你如果百度一下“转义字符”会得到更详细的解答!

分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
分享淘帖0 收藏收藏0 评分评分

0

主题

0

好友

110

积分

注册会员

Rank: 2

性别
保密
沙发
发表于 2012-7-13 18:28:22 |只看该作者
本帖最后由 sky_yx 于 2015-12-30 14:16 编辑

最后一个程序的第二行为什么空着?第4,7的大括号里可以写东西吗?

回复

使用道具 评分 举报

65

主题

3

好友

739

积分

超级版主

Rank: 8Rank: 8

自我介绍
新年第一天据说有雨,全民齐赏日出的计划恐要泡汤。”宋仁宗拍着包拯的肩,“朕决定把你悬挂在城门上。”“但微臣额上的不是太阳是月亮啊!”“没事,挂久一点就会升级成太阳
生肖
星座
狮子座
性别

最佳新人 活跃会员 热心会员 推广达人 宣传达人 灌水之王 突出贡献 优秀版主 论坛元老

板凳
发表于 2012-7-14 16:38:48 |只看该作者
支持一下
回复

使用道具 评分 举报

65

主题

3

好友

739

积分

超级版主

Rank: 8Rank: 8

自我介绍
新年第一天据说有雨,全民齐赏日出的计划恐要泡汤。”宋仁宗拍着包拯的肩,“朕决定把你悬挂在城门上。”“但微臣额上的不是太阳是月亮啊!”“没事,挂久一点就会升级成太阳
生肖
星座
狮子座
性别

最佳新人 活跃会员 热心会员 推广达人 宣传达人 灌水之王 突出贡献 优秀版主 论坛元老

地板
发表于 2012-7-14 16:39:37 |只看该作者
顺便说下,这个main函数不标准哦
int main(int argv,char** argc)
回复

使用道具 评分 举报

0

主题

0

好友

4

积分

新手上路

Rank: 1

性别
保密
5#
发表于 2012-7-18 13:51:15 |只看该作者
本帖最后由 sky_yx 于 2015-12-30 14:16 编辑

最后一个程序的第二行为什么空着?第4,7的大括号里可以写东西吗?[/quote]
第二行可空可不空,第一行和第三行之间可以填写其他东西,但现在这个不需要。第四和第七行都是格式,是不能写东西的。

回复

使用道具 评分 举报

65

主题

3

好友

739

积分

超级版主

Rank: 8Rank: 8

自我介绍
新年第一天据说有雨,全民齐赏日出的计划恐要泡汤。”宋仁宗拍着包拯的肩,“朕决定把你悬挂在城门上。”“但微臣额上的不是太阳是月亮啊!”“没事,挂久一点就会升级成太阳
生肖
星座
狮子座
性别

最佳新人 活跃会员 热心会员 推广达人 宣传达人 灌水之王 突出贡献 优秀版主 论坛元老

6#
发表于 2012-7-18 19:42:47 |只看该作者
回复

使用道具 评分 举报

3

主题

1

好友

114

积分

注册会员

Rank: 2

自我介绍
胆小,诚实,对朋友认真,不喜欢说
生肖
星座
双子座
性别
保密

最佳新人

7#
发表于 2013-6-27 03:13:43 |只看该作者
本帖最后由 sky_yx 于 2015-12-30 14:16 编辑

#include<stdio.h>
void main()
{whlie(1)
printf("你好,你很好!\n");
}

有什么不知道的地方 可以来yy 4350 哦!那里高手很多。
回复

使用道具 评分 举报

0

主题

0

好友

112

积分

注册会员

Rank: 2

性别
保密
8#
发表于 2013-8-12 10:45:25 |只看该作者
本帖最后由 sky_yx 于 2015-12-30 14:16 编辑

哎~我是一个骨灰级别的菜鸟。看了这个帖子。我感觉迷迷糊糊的,

回复

使用道具 评分 举报

您需要登录后才可以回帖 登录 | 立即注册


手机版|SKY外语计算机学习 ( 粤ICP备12031577 )    

GMT+8, 2024-4-26 08:38 , Processed in 0.158187 second(s), 31 queries .

回顶部