小编use*_*255的帖子

字符串作为指针与数组

我想知道以下定义之间的差异:

// file.cpp:
namespace n
{
static char const * const str1 = "hello";
static char const str2[] = "hello";
}
Run Code Online (Sandbox Code Playgroud)

我想要的行为,我认为它们都提供:

  • 它们都引用不可变数据(因为数据是char consts)
  • 两个变量都不能被修改(因为str1被定义为*const,因为str2是一个数组,不能用作l值?)
  • 他们都有内部联系(通过静态)
  • 它们都具有命名空间范围
  • 如果指向一个字符串数据的指针可用于另一个模块(通过此处未指定的某个函数),那些字符串的内存将是有效的(str1因为它指向字符串文字,而str2因为数组是在命名空间处声明的范围)

这种语言是否有任何差异?如果存在依赖于实现的行为,我如何调查不同平台上的差异?

(对于这个例子,我对将这些行为与std :: string选项进行对比不感兴趣,但是如果你认为其他读者会感兴趣,也可以随意谈论它.)

c++ arrays string pointers const

3
推荐指数
1
解决办法
213
查看次数

标签 统计

arrays ×1

c++ ×1

const ×1

pointers ×1

string ×1