0

我有这个函数声明:

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

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

谁能解释这意味着什么?

4

3 回答 3

4
const unsigned char* const inputChannel;

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

unsigned char* const outputChannel;

OutputChannel 是一个指向无符号字符的常量指针。

const float* const filter

filter 是一个指向常量浮点数的常量指针。

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

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

于 2013-03-07T18:06:34.150 回答
3

从右到左阅读:

const unsigned char* const inputChannel

inputChannel是一个指向常量的常量指针unsigned char

于 2013-03-07T18:00:04.503 回答
2

如果您查看标记此问题的

可以节省您时间的重要说明

你会看到一个指向螺旋规则的链接,它对于破译你在 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

所以它是一个常量指针,它指向的(一个无符号字符)也是常量。相当容易。

如果这太多了,你也可以随时作弊,把你不明白的东西扔到这里:http : //cdecl.org/ 它会用英语吐回(通常)

于 2013-03-07T18:14:33.590 回答