【问题标题】:Two dimensional dynamic char array cpp二维动态char数组cpp
【发布时间】:2015-05-27 13:29:33
【问题描述】:

我需要尽可能简单地在 c++ 11 中创建 20 个字符的全局 n 字段。

#include <iostream>
using namespace std;
char(*a)[20];
int main(){
    int n;
    do{
        cout << "N= ";
        cin >> n;
    } while (n<1);

    a[20] = new char[n][20];

    for (int i = 0; i<n; i++) cout << a[i] << endl;
    delete[] a;
    return 0;
}

这段代码正确吗?正确我的意思是这 n 个字段/20 个字符的字符串。 我想确保我不会写入随机内存部分。

数组 a 必须是全局的,因为我稍后会在一些自定义函数中使用它。

【问题讨论】:

  • 因为这是 C++,我建议使用 std::array&lt;std::string, 20&gt; a; 而不必担心。

标签: c++ arrays pointers char


【解决方案1】:

对于n个20个字符的字符串:

char** a;
int main()
{
    int n;
    do
    {
        cout << "N= ";
        cin >> n;
    }
    while(n < 1);

    a = new char*[n];
    for(int i = 0; i < n; ++i)
    {
        a[i] = new char[20];
    }
    for(int i = 0; i < n; ++i)
    {
        memset(a[i], 0, 20);
    }

    return 0;
}

【讨论】:

  • 当您可以在互联网上随机找陌生人为您做作业时,作业变得容易多了!
  • 他是想学点东西还是通过考试,这是他的决定。
  • 一个更好的答案应该是解释需要什么以及为什么,而不是仅仅编写准备好的代码。
  • 网上有很多解释。我仍然认为他只想完成作业而不是学习它是如何工作的。
  • 这不是家庭作业,我们的课程执行得非常糟糕,几乎没有解释代码的工作原理。我通过了课程,现在我正在研究语言的逻辑。可悲的是,在这里,我仍然只得到代码而没有解释。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-19
  • 1970-01-01
  • 2011-07-03
  • 2017-07-06
  • 2014-06-03
  • 1970-01-01
  • 2017-10-04
相关资源
最近更新 更多