【问题标题】:C - Setting a static char array with a "string"C - 使用“字符串”设置静态字符数组
【发布时间】:2011-04-30 19:13:26
【问题描述】:

恐怕是一个非常简单的问题,但我已经被这个问题困扰了好几天,谷歌什么也没给我,我什至尝试过 bing... ;o)

我在VS2010的windows下使用纯C语言工作。

我有一个这样的静态字符数组...

static char word[5];

我可以很好地设置每个数组位置,即...

word[0] = 'f'; word[1] = 'o'; word[2] = 'o';

但我似乎不能做的(在声明后的任何时候)是......

word = "foo";

非常感谢任何关于我哪里出错的帮助或指示。

提前谢谢大家。

【问题讨论】:

  • 任何帮助或指针?双关语:]

标签: c arrays string char


【解决方案1】:
strncpy(word, "foo", _countof(foo));

如果未定义_countof,请改用sizeof(foo) / sizeof(*foo)

【讨论】:

  • 可爱的 jubbly,感谢 Mehrdad 的魅力。我是一个 C# 人,在深入研究这个世界之后,我发现除了对 C 人的尊重之外什么都没有。我会尽快将您的答案标记为已接受。
  • @Nick:哈哈当然,很高兴它有帮助。 :) 是的,我也喜欢 C#,但我发现需要学习 C,所以我也学了。 C 还不错;不过,C++ 是另一种野兽!
  • 是的,我认为了解 C 也很好,有助于了解较低级别的情况,我知道太多开发人员在 C# 中调用非常昂贵的操作,因为他们不了解什么该方法调用正在回退到内存级别。
  • @Nick:当然。即使在您学习了 C 之后,您也应该了解 CPU 缓存及其工作原理,因为这样您就会了解到,例如,如果您要添加两个数组,循环的顺序(@ 987654324@ 然后j vs j 然后i) 可以将你的循环减慢10倍。:)(这称为参考位置。)
【解决方案2】:

数组不是指针。指针不是数组。

在大多数情况下,数组衰减为指向其第一个元素的指针。但该指针不可修改。

word = "foo";

数组word 衰减为指向其第一个元素的不可修改指针...您尝试通过将字符串文字"foo" 的地址分配给该指针来修改该指针

【讨论】:

  • 感谢您的输入pmg,我相信多亏了这个,我对这个问题有了更好的理解。
猜你喜欢
  • 1970-01-01
  • 2020-07-31
  • 2010-11-25
  • 2017-02-16
  • 2018-03-30
  • 1970-01-01
  • 2014-10-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多