理解C函数参数

时间:2013-03-07 17:55:29

标签: c

我有这个函数声明:

void gaussian_blur
(
    const unsigned char* const inputChannel,
    unsigned char* const outputChannel,
    const float* const filter
) 
{..}

我是C的新手。我已经完成了基本教程并理解了指针和常量的概念,但我无法理解这个参数列表的含义。

任何人都可以解释这意味着什么吗?

3 个答案:

答案 0 :(得分:4)

const unsigned char* const inputChannel;

输入通道是指向常量unsigned char的常量指针。

unsigned char* const outputChannel;

OutputChannel是指向unsigned char的常量指针。

const float* const filter

filter是一个指向常量float的常量指针。

  

常量指针 - 指针变量保存的地址不能   改变。

     

常量数据 - 数据被视为只读/常量而不能   被修改。

答案 1 :(得分:3)

从右到左阅读:

const unsigned char* const inputChannel

inputChannel是指向unsigned char常量的常量指针。

答案 2 :(得分:2)

如果您查看标有此问题的标记的信息链接,请向下滚动到

  

可以节省时间的重要说明

你会看到Spiral rule的链接,这对于解读你在C中不理解的事物的含义非常有用:

它的基础是读取变量的名称,然后向右移动,然后一次离开一个元素。在这种情况下,因为你的变量没有任何东西你只需向左移动:

 inputChannel,                           // inputChannel is a
 const inputChannel,                     // constant
 * const inputChannel,                   // pointer
 char* const inputChannel,               // to a char
 unsigned char* const inputChannel,      // which is unsigned
 const unsigned char* const inputChannel // which is constant

所以它是一个常量指针,它指向的内容(unsigned char)也是常量。很简单。

如果那太多你总是可以作弊,把你不理解的东西扔到这里:http://cdecl.org/并用英语(通常)把它吐回来