C++ 使用指针填充c字符串数组

C++ 使用指针填充c字符串数组,c++,arrays,pointers,c-strings,C++,Arrays,Pointers,C Strings,在我的家庭作业中,我必须编写一个函数,该函数使用char指针填充c字符串数组。作业的总体目标是熟悉动态内存分配。我不熟悉这个话题,所以可能与此有关。这将很容易,除非函数必须是常量,因此我不能增加指针并将数组中的每个值设置为指针 但是,我尝试使用for循环,因为该函数是const,它不允许我递增只读值 以下是我目前的功能: const char* MyString::c_str() const { char c_str[m_size]; c_str = *m_buffer;

在我的家庭作业中,我必须编写一个函数,该函数使用char指针填充c字符串数组。作业的总体目标是熟悉动态内存分配。我不熟悉这个话题,所以可能与此有关。这将很容易,除非函数必须是
常量
,因此我不能增加指针并将数组中的每个值设置为指针

但是,我尝试使用for循环,因为该函数是const,它不允许我递增只读值

以下是我目前的功能:

const char* MyString::c_str() const {
    char c_str[m_size];
    c_str = *m_buffer;
    return c_str;

}
m_buffer
是指向句子的字符*。
m_size
是指针的大小。

我们肯定需要查看
MyString
类的定义。我想这会有所帮助,但同时,OP似乎主要需要了解数组索引,以及。。好。。。动态分配。(和分别)我已经可以看出局部变量
c_str
存在问题,它除了可能由于混淆而成为一个不明智的名称之外,还是一个局部变量,在函数返回时被释放。您永远无法返回指向本地堆栈帧上内存的指针。除此之外, CySTR 是一个字符数组,C++不允许字符分配给它。我假设
memcpy(c_str,m_buffer,m_size);c_str[m_size]=0
可以做到这一点,但它仍然使用一个本地数组,该数组不会一直存在。类字符串的
c_str
函数通常不应该动态分配任何内容或填充任何内容。一个实现通常由一行组成,
返回m_buffer在您的情况下。由于你的版本包含了几乎所有可能的错误,我怀疑你的整个作业充满了问题。也许您想问一两个关于代码其他部分的问题。