我有这个函数声明:
void gaussian_blur
(
const unsigned char* const inputChannel,
unsigned char* const outputChannel,
const float* const filter
)
{..}
我是 C 新手。我已经阅读了基本教程并理解了指针和常量的概念,但我无法理解这个参数列表的含义。
谁能解释这意味着什么?
我有这个函数声明:
void gaussian_blur
(
const unsigned char* const inputChannel,
unsigned char* const outputChannel,
const float* const filter
)
{..}
我是 C 新手。我已经阅读了基本教程并理解了指针和常量的概念,但我无法理解这个参数列表的含义。
谁能解释这意味着什么?
const unsigned char* const inputChannel;
输入通道是一个指向常量 unsigned char 的常量指针。
unsigned char* const outputChannel;
OutputChannel 是一个指向无符号字符的常量指针。
const float* const filter
filter 是一个指向常量浮点数的常量指针。
常量指针 - 指针变量保存的地址不能更改。
常量数据 - 数据被视为只读/常量,不能修改。
从右到左阅读:
const unsigned char* const inputChannel
inputChannel
是一个指向常量的常量指针unsigned char
。
如果您查看标记此问题的c标签的信息链接,请向下滚动到
可以节省您时间的重要说明
你会看到一个指向螺旋规则的链接,它对于破译你在 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/ 它会用英语吐回(通常)