首页 > 解决方案 > 何时在 C 函数中使用 const

问题描述

我一直在为明天的期中学习,我遇到了这个问题,我无法在答案 2 和 3 之间做出决定。PlayingCard是一个struct,并且HANDSIZE是一个值为 5 的常数。

正确的答案显然是选项 2,但我和一个朋友都认为这里更好的选择是 3,因为我们被告知,当我们知道变量不会被更改时,我们应该使用 const 作为良好的编程习惯. 既然这里没有改变,为什么选项 2 会比选项 3 更好?

/* QUESTION: What should go for the definition of isFlush that detects flushes
   1: Nothing
   2: bool isFlush(PlayingCard hand[HANDSIZE]) {
   3: bool isFlush(const PlayingCard hand[HANDSIZE]) {
   4: bool isFlush(PlayingCard ** hand) {
   5: bool isFlush(const PlayingCard ** hand) {
   6: bool isFlush(PlayingCard *** hand) {
   7: bool isFlush(CardFace * hand) {
   8: bool isFlush(CardSuit * hand) {
   9: bool isFlush(CardSuit suits[HANDSIZE]) {
*/
// missing function defintion
    CardSuit suit = hand[0].suit;
    for (int i = 1;  i < HANDSIZE; i++ ) {
        if (suit != hand[i].suit) {
            return false;
        }
    }
    return true;
}

标签: c

解决方案


正如我们被告知,const当我们知道变量不会被更改时,我们应该将其用作良好的编程习惯

这是真的,但仅当您将指针传递给变量时。如果按值传递变量,我看不到任何优势。

在这种情况下,我同意最佳答案是 3。问问题的作者为什么正确答案是 2 可能为时已晚。


推荐阅读