当我们在堆中动态分配5个元素的内存时,为什么它显示的元素超过5个? 在此程序中,我已将char指针赋予str并指定了动态内存分配,但是当它接受动态内存的大小时,它将显示比给定大小更多的元素。例如:-如果我给定5个字符数组,则显示的数量超过了字符串的5个字符
#include<iostream>
#include<cstdlib>
using namespace std;
struct node
{
int tos;
int l;
char *str;
};
class balancing
{
struct node s;
public:
balancing();
balancing(int len);
void balance();
};
balancing::balancing()
{
s.tos=-1;
s.l=0;
s.str=NULL;
}
balancing::balancing(int le)
{
s.l=le;
s.str=new char[s.l];
s.tos=-1;
}
void balancing::balance()
{
int length;
char ch1;
cout<<"Enter the String"<<endl;
cin>>s.str;
cout<<s.str;
}
int main()
{
int len;
cout<<"Enter the Length"<<endl;
cin>>len;
balancing b(len);
b.balance();
return 0;
}
答案 0 :(得分:0)
您的问题可以归结为
char str[2]={'H','i'};
cout<<str; // why doesn't this print 2 characters?
答案是因为要使用字符数组作为字符串,必须以null结尾。任何期望空字符的字符串处理代码都将继续进行,直到找到一个(或由于未找到而导致问题)。