刚刚看Linux UNIX系统编程手册时看到,这里的sys_siglist是什么?
我的理解如下,不知道对不对
首先sys_siglist是一个数组,里面每一个元素都是char *指针,比较疑惑的是两个const.的作用什么?
刚刚看Linux UNIX系统编程手册时看到,这里的sys_siglist是什么?
我的理解如下,不知道对不对
首先sys_siglist是一个数组,里面每一个元素都是char *指针,比较疑惑的是两个const.的作用什么?
月经贴吗...
a. const char* const sys_siglist
b. char const* const sys_siglist
这里a == b
一律从右往左读. 把const写在后面(即b
)读起来就很方便: sys_siglist是const pointer to const char
接下来就没什么问题了吧.
练习:typedef int *pint
. const pint
是
int* const
const int*
int const*
中的哪个(些)?
答案:
因为pint
其实是作为一个类型出现的, 所以const
修饰的是这个类型, 用起来的感觉是和int const
一样的, 都是修饰其值, 对于pint
来说, 值就是 int*
. 这里我们也应该把const
放后面, 这样就语义一致了: pint const == int* const
. 所以读法也是const pointer to int
. 因此答案是1
. 而和上面的a
, b
一样, 2
== 3
.
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
sys_siglist使用extern修饰,说明它是一个外部变量,声明在其他头文件中。
第一个const修饰的是数组变量中的元素, 即数组变量sys_siglist中的元素类型为
const char *
第二个const修饰的是sys_siglist这个数组变量,即
sys_siglist
这个变量是const
的,不能被修改,是只读的。