静态/ Const类型* Const差异

时间:2016-03-07 11:44:56

标签: c

如果我有一个静态常量char var good = function (obj, res) { res.send({ success: 1, res: obj }); }; 作为数组,可以写下如下内容:

'NAME'

与写作相同:

static const *char NAME[8] = {"gregory"};

我的意思是他们都是静态的,我听说将const再次置于*中使其静止。

我知道,只有const char *const NAME[8] = {"gregory"}; static char

,静态和常量/文字是不同的

3 个答案:

答案 0 :(得分:1)

 `  static const  ` 

过度指定。如果你想要一个不能改变的字符串,请使用const

如果你这么倾向于使用#define NAME "gregory"

哪个也适用。然后你可以:

strcat(*ptrOtherString,NAME);

答案 1 :(得分:1)

关键字static在C中有三种用途:

  1. 在退出块后使局部变量持续。
  2. 在程序的整个生命周期内使局部变量持续。
  3. 要防止将符号导出到链接器,请将它们有效地“隐私”到源文件。
  4. 简而言之,关键字static为对象提供了“静态存储类”,从而为其提供了上述功能。

      

    我的意思是他们都是静态的,我听说将const再次置于*中使其静止。

    不是真的。 “静态存储类”由“存储类说明符”提供给对象,例如autoregisterstaticextern,而不是“类型限定符”,例如{{ 1}}。显然,一个人无法完成另一个人的工作。除非第二个语句在函数之外,否则它不是“静态的”,因为缺少关键字const

答案 2 :(得分:1)

  

我的意思是他们都是静态的,我听说将const再次置于*中使其静止。

这不正确; static不会影响存储时长。 const存储持续时间意味着阵列的存储在程序启动时分配并保持到程序终止。 static只是将某些内容指定为不可修改的内容。

constconst T *p都表示T const *p是指向p 1 的指针; const T是可修改的(您可以将其设置为指向不同的对象),但p不是(您无法修改*p指向的事物)。

p表示T * const p是指向p const 指针; T是可修改的(您可以修改*p指向的内容),但p不是(您不能将p设置为指向其他内容)。

pconst T *const p都表示T const *const pp都不可修改。

要使某些内容具有*p存储持续时间,您必须在文件范围(在任何函数的主体之外)或使用static关键字声明它。

<小时/> 1。类型说明符(staticintchar等)和类型限定符(floatconst)可以在声明中以任何顺序出现; volatileconst unsigned long都意味着同样的事情,但如果使用第二种形式,你的同伴可能会打败你。目前,这也适用于存储类说明符(long const unsignedstatic),尽管未来的语言版本可能要求所有存储类说明符在声明中排在第一位