const声明

图片描述
刚刚看Linux UNIX系统编程手册时看到,这里的sys_siglist是什么?
我的理解如下,不知道对不对
首先sys_siglist是一个数组,里面每一个元素都是char *指针,比较疑惑的是两个const.的作用什么?

回答:

  1. sys_siglist使用extern修饰,说明它是一个外部变量,声明在其他头文件中。

  2. 第一个const修饰的是数组变量中的元素, 即数组变量sys_siglist中的元素类型为const char *

  3. 第二个const修饰的是sys_siglist这个数组变量,即sys_siglist这个变量是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

  1. int* const

  2. const int*

  3. int const*

中的哪个(些)?

答案:
因为pint其实是作为一个类型出现的, 所以const修饰的是这个类型, 用起来的感觉是和int const一样的, 都是修饰其值, 对于pint来说, 值就是 int* . 这里我们也应该把const放后面, 这样就语义一致了: pint const == int* const. 所以读法也是const pointer to int. 因此答案是1. 而和上面的a, b一样, 2 == 3.

以上是 const声明 的全部内容, 来源链接: utcz.com/p/191290.html

回到顶部