在C编程中,function_name和变量之间有什么区别?


回答 1:

函数名称是您为创建的函数分配的名称,该名称可以占用1到多行代码。一个函数可以接收0到许多参数。但只返回一个。

变量基本上被命名为分配用于接收和存储信息的内存空间,也可以将其作为参数传递给函数。通常,您会将变量delare为某种类型:整数,字符串,字符等。


回答 2:
在C编程中,function_name和变量之间有什么区别?

它们是完全不同的两件事。

函数名称(不需要下划线,只需要一个短语)就是函数的名称,它是在声明或定义函数时确定的。

变量是-好吧,并不是100%清楚C中的“变量”是什么。C标准通常不使用“变量”一词。 C确实将术语对象定义为“执行环境中的数据存储区域,其内容可以表示值”。命名的声明对象可以合理地称为“变量”,但对于“变量”到底是什么还是不是变量没有共识。

可以调用一个函数。一个对象可以保存值。


回答 3:

主要区别在于与功能名称关联的功能由编译器自动设置。在C语言中,函数不是“一流的对象”-您无法将它们传递给将对其进行修改/合并并以数字或字符串的方式返回的函数)。

变量保存一类对象的值(整数,字符,浮点数等。您可以拥有一个指向函数的指针,这是一个第一类对象,您可以存储该函数并从该函数传递/返回(并用于调用函数),但是您不能像运行一流对象那样在运行时更改函数本身的“值”。

因此,它们看起来与变量几乎相同,但是除了获取其地址外,您唯一可以使用它们的就是调用它们。您不必说main = {something…},您只需要定义一个main函数,然后让编译器将名称与幕后代码关联即可。

因此,像Haskell这样的语言(可以在运行时定义函数的值)被称为“函数式”语言。一个简单的示例是一个名为make tax adder的函数,您将税率传递给它,然后返回一个函数,该函数将为传递给它的项目添加固定税率:

addstatetax = maketaxadder(.05)

addlocaltax = maketaxadder(.015)

在这里,我们在运行时创建了2个函数,例如addstatetax(100)将返回105,而addlocaltax(100)将返回101.50。

变量addstatetax具有函数的“值”,该函数采用一个数字并返回另一个加了5%的值。您可以使用结构体和函数指针在C中完成类似的操作,但这要困难得多(众所周知,在C中定义函数指针类型非常困难)并且更容易出错。


回答 4:

函数名称本质上是一个指针,因此您可以执行以下操作:void(* func)(int); func = myVoidFunc; //或Alternativefunc =&myVoidFunc;

这确实是主要区别。正常使用指针时,无论是否使用(与)地址运算符都非常重要,例如:

int * ptr = myVar; // andint * ptr =&myVar;

几乎可以肯定会导致非常不同的行为,但除此之外,函数名称实际上只是指针,至少我是这样认为的。我敢肯定,我不会讲任何细节,但是从您的角度来看,我肯定会做到。

当然,另一个区别是您不能引用函数名称,不能对其进行指针算术,或者至少(如果可以的话)它是非常危险的,依此类推。