C 从任何方法返回常量或最终值/引用的好处/缺点

C 从任何方法返回常量或最终值/引用的好处/缺点,c,constants,return-type,C,Constants,Return Type,我是一个探索C语言深度的新手程序员。为什么一些内置函数会返回常量值?有人能解释一下在方法返回中使用const的优点或缺点吗 使用final和const从函数和方法返回值是为了防止人们更改其值。例如,如果我有(在c中) 我不希望有人像这样使用它 char myChar = getChar()[0]++; 然后我必须返回一个常量,以防止它被更改 对于Java来说,这是非常不同的。您不返回最终值,而是创建方法最终值 final与Java方法一起使用,以标记该方法不能被覆盖(对于对象范围)或隐藏(对于

我是一个探索C语言深度的新手程序员。为什么一些内置函数会返回常量值?有人能解释一下在方法返回中使用const的优点或缺点吗

使用final和const从函数和方法返回值是为了防止人们更改其值。例如,如果我有(在c中)

我不希望有人像这样使用它

char myChar = getChar()[0]++;
然后我必须返回一个常量,以防止它被更改

对于Java来说,这是非常不同的。您不返回最终值,而是创建方法最终值


final
与Java方法一起使用,以标记该方法不能被覆盖(对于对象范围)或隐藏(对于静态)。这允许原始开发人员创建他可以确定不会被其他人更改的功能,这就是它提供的全部保证。

C的
const
和Java的
final
非常不同,尤其是在您所说的情况下

在C中(免责声明:我已经有一段时间没有使用C了,所以请让我知道我错在哪里),让我们看看这个例子:

const int something() {
    return 3;
}
const
没有意义,因为它不像您可以做的那样:

something() = 3;
有关C中的
const
返回值的更多信息,请查看以下内容:

  • (这是C++,但仍然有用)。
在Java中,我假设您所说的是:

public final int something() {
    ...
}

这里的
final
与返回值无关<这里的code>final意味着如果扩展
something()
所属的类,就不能重写
something()
的实现。这在精神上与
final
变量有些相似;这些变量的值一旦设置就无法更改。

Java和C是非常不同的语言,遵循非常不同的语言理念。Java的
final
与C的
const
使用非常不同,作为新手比较两者可能很危险。我不认为这是重复的。虽然OP错误地将const和final混为一谈,但问题在于它们之间的区别,我认为答案很重要,因为它们表明OP是如何错误的。我认为这对那些可能犯过同样错误的人是有用的。链接的问题只涉及C语言中的
const
。别忘了你也可以将变量设为final。@DJClayworth是的!但OP只是询问方法/函数的返回,我相信,在C示例中,您仍然会返回一个非常量值,只是该值将是指向常量字符的指针。
public final int something() {
    ...
}