关键字"const"在C语言中函数参数中的好处



下面的函数上const关键字有什么好处。

BOOL8 CheckSimilarity(const Name_t NameOne, const Name_t NameTwo)
  • 如果我们不放置关键字 const,它会以任何方式影响功能吗?

我一直认为您必须为变量传递指针并与函数中的指针进行比较,以便它转到存储变量的内存位置并比较变量本身,就像在交换函数中一样,就像在 K&R 中一样?

typedef UINT8 Name_t[5]
Log_t* Log(Name_t Name)
{
   Log_t *point2Log = Log1;
   while (point2Log < Log1)
   {
      if (CheckSimilarity(Name, point2Log->Name))
      {
         return point2Log;
      }
      point2Log++;
   }
   return NULL;
}

BOOL8 CheckSimilarity(const Name_t NameOne, const Name_t NameTwo)
{
    UINT8 count;
    for (count=0; count<5; count++)
    {
        if (NameOne[count] != NameTwo[count])
        {
            return FALSE;
        }
    }
    return TRUE;
}

对于参数,它告诉编译器该函数不会修改其参数。这反过来可能使编译器能够执行一些原本可能没有完成的快捷方式或优化。

这也是你的程序员同事可以阅读的东西,并且知道他们可以调用该函数,而不必担心对数组等内容可能产生的副作用。


谈到程序员和他们可以阅读的内容,似乎您已经将Name_t定义为指针的别名。请不要这样做,这会让代码更难阅读、遵循和维护。

最新更新