C++ 使用指针填充c字符串数组
在我的家庭作业中,我必须编写一个函数,该函数使用char指针填充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;
常量
,因此我不能增加指针并将数组中的每个值设置为指针
但是,我尝试使用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
存在问题,它除了可能由于混淆而成为一个不明智的名称之外,还是一个局部变量,在函数返回时被释放。您永远无法返回指向本地堆栈帧上内存的指针。除此之外,memcpy(c_str,m_buffer,m_size);c_str[m_size]=0
可以做到这一点,但它仍然使用一个本地数组,该数组不会一直存在。类字符串的c_str
函数通常不应该动态分配任何内容或填充任何内容。一个实现通常由一行组成,返回m_buffer代码>在您的情况下。由于你的版本包含了几乎所有可能的错误,我怀疑你的整个作业充满了问题。也许您想问一两个关于代码其他部分的问题。