C++字符串跟字符数组的关系。求文字解释。拒绝概念。
3个回答
展开全部
简单的来讲 字符串就是一串字符,系统知道他是字符串 而字符数组 则是一个数组,系统不会自动识别为字符串,可以输出单个字符,一个一个来看 想要系统识别为字符串除要在数组后加上'\0'表示结束
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
解决办法很简单
将 main 函数里的 n=new char[12]; 这一句放到 while 循环内 cout<<"input num:"<<endl; 的上面,
原理:
首先你读取一个数字111,它保存在哪儿?保存在char *n里,我们假设你申请的地址为0x0001,那么现在这个地址里存的数据就是111;然后你构造oo对象的时候,参数传递了一个指针,也就是说你在o[0]里的char *num保存的地址也是0x0001。当你读取第二个数222的时候,你给*n重新赋值为222,也就是地址0x0001的位置保存了222。同样在o[1]内*num保存的地址也是0x0001。这样当你输出的时候,无论是o[0]还是o[1]你输出的都是地址0x0001的数据。所以输出就是222,222.如果你将n=new char[12]; 这一句放到 while 循环内的话,你第二次进while语句申请的地址也许就是0x0002,这样就可以将输入的数据依此输出了。
另外,申请内存一定要记得释放,不然会造成内存泄露。
将 main 函数里的 n=new char[12]; 这一句放到 while 循环内 cout<<"input num:"<<endl; 的上面,
原理:
首先你读取一个数字111,它保存在哪儿?保存在char *n里,我们假设你申请的地址为0x0001,那么现在这个地址里存的数据就是111;然后你构造oo对象的时候,参数传递了一个指针,也就是说你在o[0]里的char *num保存的地址也是0x0001。当你读取第二个数222的时候,你给*n重新赋值为222,也就是地址0x0001的位置保存了222。同样在o[1]内*num保存的地址也是0x0001。这样当你输出的时候,无论是o[0]还是o[1]你输出的都是地址0x0001的数据。所以输出就是222,222.如果你将n=new char[12]; 这一句放到 while 循环内的话,你第二次进while语句申请的地址也许就是0x0002,这样就可以将输入的数据依此输出了。
另外,申请内存一定要记得释放,不然会造成内存泄露。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
都是用来存放一组字符的顺序结构,字符数组用数组长度(分配时就限定了)限制了存取的范围,而字符串用结束符号来表示存储的范围。
还有一点,字符串一般来说是从宏观上来看的,其里面的数据是看成一个整体来处理的。而字符数组一般我们都是从微观方面来看的,我们看的是一个一个的数据元素。
以上是个人观点,仅供参考。
还有一点,字符串一般来说是从宏观上来看的,其里面的数据是看成一个整体来处理的。而字符数组一般我们都是从微观方面来看的,我们看的是一个一个的数据元素。
以上是个人观点,仅供参考。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询