【问题标题】:What is the name?是什么名字?
【发布时间】:2013-08-01 17:40:01
【问题描述】:

在 c 编程中我应该如何称呼它:

char *fileNames[3] = {"string1", "string2", "string3"};

指针数组,指向字符串的数组,还是什么?

不是懒得去别的地方找答案,是我没找到。

更新 1:我已经调用了上述(不管它是什么)文件名,因为我实际上是在使用它来存储文件名,但它可能是我的问题中的任何内容。

感谢您的激烈辩论,但答案太多,甚至很难决定哪个适合我。

【问题讨论】:

标签: c arrays string pointers char


【解决方案1】:

您通常可以从右到左阅读简单 C/C++ 声明,但您应该遵循Clockwise/Spiral Rule

这是一个指向字符的指针数组。

【讨论】:

  • 我认为 OP 理解它 是什么,(s)他只是在问 叫什么 它。在这种情况下,“字符指针数组”是一个糟糕的名称,因为它描述了它的类型,而没有关于它的含义的信息。 (特别是:它忽略了指向的字符是 C 样式字符串的初始字符这一事实。)
  • 废话。 C 类型以顺时针螺旋方式读取。见c-faq.com/decl/spiral.anderson.html
  • "指针数组,指向字符串的数组,还是什么?"我不认为你是正确的。
  • 我不正确,我只是在问,我发现它引发了一场争论,所以并不像我最初想象的那么简单。
  • 我以前也用过,但都不是很了解。
【解决方案2】:

名称fileNames 是一个包含 3 个char*(字符指针)的数组,它们在您的声明中指向 3 个字符串文字。它被称为:'array of pointers to char'或'array of strings',因为每个索引都指向一个字符串。你应该让它们保持不变:

const char *fileNames[3] = {"string1", "string2", "string3"};

【讨论】:

  • 这是错误的。它不是 3 个 'char*' 指针的数组。那将是 char** []。它是一个由三个指向 char 的指针组成的数组。
  • @GrijeshChauhan 他写了“3个字符*指针”。那是错误的。这是指向一个字符的指针的三个指针。
  • @Wiz 是的,但我加上括号现在正确吗?建议你是否可以
  • @Wiz 谢谢!在你之前我也注意到了,所以我添加了更多的文字。并将pointer设为pointer
  • 名称 fileNames 是一个包含 3 个字符的数组(字符指针),它们确实指向 3 个字符串文字*,或者更具体地说,它们包含字符串文字的地址,因为字符串文字代表指向自己的指针。
【解决方案3】:

对于这类问题,有cdecl。在英语中,你的类型是

declare fileNames as array 3 of pointer to char.

【讨论】:

    【解决方案4】:

    你可以把它称为

    字符指针数组

    【讨论】:

    • 但为什么不Pointer array pointing to strings 这不是答案。-- 不投票。应该改进答案,否则发表评论。
    猜你喜欢
    • 1970-01-01
    • 2014-02-27
    • 2012-11-25
    • 1970-01-01
    • 2021-08-12
    • 2011-10-07
    • 2018-05-12
    • 2020-01-12
    • 1970-01-01
    相关资源
    最近更新 更多