如何理解语句与函数及二者区别?
如题 是不是由基本的操作符和变量组成的表达式 和 三种基本功能的 循环 选择 判断 if for ....为语句 而需要调用stdio。h或是自己编写的特定功能的则为函数?
[解决办法]
语句简单的说就是以 ; 结尾的 都叫语句
[解决办法]
函数是需要通过调用才执行,而函数体里面的就是由语句块构成
[解决办法]
函数是认为定义的,名称也是人取的
而for,if,while等语句(循环 选择(选择语句又叫判断或者分支语句))是系统的关键字
函数有返回值,而上述语句没有返回值
函数调用完成后需要加;
而上述语句是不需要分号的。
[解决办法]
一个函数里面 包含若干语句
main就是函数阿 带;都是语句阿
[解决办法]
3.6 STATEMENTS
Syntax
statement:
labeled-statement
compound-statement
expression-statement
selection-statement
iteration-statement
jump-statement
Semantics
A statement specifies an action to be performed. Except as
indicated, statements are executed in sequence.
A full expression is an expression that is not part of another
expression. Each of the following is a full expression: an
initializer; the expression in an expression statement; the
controlling expression of a selection statement ( if or switch ); the
controlling expression of a while or do statement; each of the three
expressions of a for statement; the expression in a return statement.
The end of a full expression is a sequence point.
Forward references: expression and null statements ($3.6.3), selection
statements ($3.6.4), iteration statements ($3.6.5), the return
statement ($3.6.6.4).
[解决办法]
3.7.1 Function definitions
Syntax
function-definition:
declaration-specifiers<opt> declarator
declaration-list<opt> compound-statement
[解决办法]
你再源文件中写的除注释外都是语句,
函数由语句块构成
[解决办法]
以分号结尾的就算一条语句,
函数会包含若干条语句,实现某一个功能。
[解决办法]
函数由语句组成,是完成一定功能语句的集合
[解决办法]
比较深奥的东西。。
我只看得出,说不出
[解决办法]
所有的表达式加上;就是语句
foo()是表达式
foo();是语句
[解决办法]
个人观点,函数需要入栈,分配局部变量,单纯的语句都不需要
[解决办法]
我觉得有()的就是函数!
[解决办法]
VC调试时按Alt+8,TC或BC用TD调试,打开汇编窗口看每句C对应的汇编不就啥都明白了吗。
(Linux或Unix下应该也可以在用GDB调试时,看每句C对应的汇编。)
[解决办法]
函数一般由数个语句组成能独立完成一个功能或返回一个值。
而语句能控制一个循环、选择、声明变量以及调用函数和引用各种数据。
[解决办法]
回答问题要针对提问者的实际情况,看样子该同学为刚刚接触编程的。
源代码里,最小的单位是什么?
是单个的字母和符号。如 int 中的i,n,t;如 a>b 中的a,>,b
不过一般来说没有人真正关注单个的字母,这能表达的意思很少。所以就有标识符这个概念。
标识符就是字母,下划线,数字组成的不以数字为第一个元素的单词,如 int _abc,xyz,howareyou
有些标识符是C语言保留作为特殊含义的,比如 int,double,for,whilebreak等等,这些就被C语言关键字。
除了关键字之外的标识符,都是自定义的标识符,比如
printf,scanf,foo,bar
标识符的作用,就是用来命名一个东西,如变量名称,函数名称,结构体名称,类名称等。
另外一个字符是空格和Tab符,作用是为了分隔不同的标识符或者标点符号。单词之间需要空格分隔,intxyz是一个标识符,而 int xyz则是两个不同的标识符。
标点符号在C语言中,都有自己的意义。如+,表示相加,编译器在扫描代码的时候,会将+两边的东西进行相加;比如“(”一般表示函数调用,也有用来进行优先级限定等。
不同的标识符有不同的作用,被编译器进行不同的动作。比如
int,这个标识符被编译器读入的时候,就知道代码是在声明一个变量了,其结果是编译器一定要接着读入一个标识符作为变量名称。如果后面跟着的不是标识符,而是标点符号,比如+如下
int +x
则编译器说这行代码有问题,我读不懂。
这些规则,就是所谓的语言,C语言,就是程序员和C编译器进行交流的语法规则,一般都是程序员来说,C编译器进行读,要编译器读的懂,就必须遵守语言规则。
规则是什么? int 后面必须是标识符。并且必须是自定义标识符,而不能这样:
int break
break是关键字,不能使用。
int howareyou 就是一个合法的声明了。声明了一个变量,名称为howareyou,类型是int。关于声明的作用,可以自行以编译器的身份思考为什么要这么写。
if后面必须是(),括号里面一定要能得到一个bool值,括号后面必须再接一段代码(嗯,这里说不清了)
for有自己的规矩,while也有,函数定义,函数调用也都有自己的规矩。
对于刚才的int howareyou,编译器读到这里,基本上就可以松一口气,不用再紧张了。不像它读到int后,会紧张兮兮的读后面的文字,要进行判断读的东西是不是合法的东西。
这就像人和人进行交流一样,说了“我是”之后,听的人会继续竖着耳朵继续听下文,因为按照规则,后面还有东西没说完。
“我是楼主”,听的人也可以松一口气,因为这句话结束了,这个语句可以结束了,那就用“。”表示。
同样的,在C语言中,int howareyou之后,一句话完成了,可以加一个“;”表示,也就是意思表达完毕,用;结束之。那么就说:
int howareyou;是一个语句。至于是什么语句呢?因为他的功能是声明变量,所以有人说他是声明语句。
那如果不加;会有什么情况?想想人类交流,如果是这样:
“我是楼主,”对于看文章的人来说,就知道意思没有表达完毕,后面还有东西要说,那就会又紧张起来,等待后面的东西出来,如果后面什么都没有,又来了一句:
“我是楼主,
请不要随地吐痰。”
人会觉得意思不连贯。所以;的作用,就是告诉编译器,也就是告诉读代码的人,这句结束了,功能完成了。后面的代码跟这句没有关系了。
函数调用,同样的,编译器首先是读入到一个标识符,如
printf
编译器还不至于聪明到认为这就在进行函数调用,它根本不知道printf是什么玩意儿,所以,他需要继续去读,发现后面接着一个(
这下,编译器就知道了,printf是一个函数名称呢。后面要接参数什么之类的,同样地,当语法要求的东西都读到了之后,意思完毕,加;表示语句结束。
这么一来,就有了很多类型的语句,比如声明语句,函数调用语句,for语句,while语句等等。都安装规则,必须得到所有的信息之后才算结束了。
基本上,语句算是解释完毕了。
一条语句一条语句的就组成了程序块,将某快相关的语句提取出来就可以形成函数了。
C语言本身没有函数,所有的函数都是自定义的,包括stdio.h里带的,这些函数是C运行时库函数,一般由编译器厂商提供,一般是用汇编语言写出来的。至于汇编语言写的代码怎么成了C语言的函数,这个问题,就留在今后的学习里解决了。