我制作了自己的长度函数,它对于正常的字符数组来说非常完美,但是在指针的情况下,它并没有给出正确的结果。与strlen()函数相同。 让我们说我存储了#34;书籍"在指针字符数组a。它应该显示5作为长度,然后为什么它显示14
char * regrowchar(char *p, int size)
{
char *q = p;
p = new char[size];
for (int i = 0; i < size; i++)
p[i] = q[i];
return p;
}
void input(char *a, int &size)
{
int i = 0;
cin >> a[i];
while (1)
{
size++;
a = regrowchar(a, size);
i++;
cin.get(a[i]);
if (a[i] == '\n')
{
a[i] = '\0';
break;
}
}
}
int main()
{
int size1 = 1;
int size2 = 1;
char * a = new char[size1];
char * b = new char[size2];
input(a, size1);
input(b, size2);
cout << strlen(a) << " " << strlen(b) << endl;
}
答案 0 :(得分:-3)
参数a
(指针)按值传递给input()
。因此,a = regrowchar(a, size)
无法看到更改main()
。通过引用传递它。此外,虽然您还没有问过,但是您的代码会泄漏内存,因为它会动态分配但永远不会释放内存。
https://stackoverflow.com/users/4706785/peter