我有这个函数声明:
void gaussian_blur
(
const unsigned char* const inputChannel,
unsigned char* const outputChannel,
const float* const filter
)
{..}
我是C的新手。我已经完成了基本教程并理解了指针和常量的概念,但我无法理解这个参数列表的含义。
任何人都可以解释这意味着什么吗?
答案 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)
如果您查看标有此问题的c标记的信息链接,请向下滚动到
可以节省时间的重要说明
你会看到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/并用英语(通常)把它吐回来