C:如何使用新的找到存储的函数返回值?
我正在阅读Bjarne Stroustrup的第3版C编程语言,并尝试完成所有的练习.我不知道如何从6.6节接近练习13,所以我以为我会转向Stack Overflow来获得一些洞察力.以下是问题的描述:
这是我的代码到目前为止,有问号,我不知道该怎么办: ? cat(char first[],char second[]) { char current = ''; int i = 0; while (current != ' ') { current = first[i]; // somehow append current to whatever will eventually be returned i++; } current = ''; i = 0; while (current != ' ') { current = second[i]; // somehow append current to whatever will eventually be returned i++; } return ? } int main(int argc,char* argv[]) { char first[] = "Hello,"; char second[] = "World!"; ? = cat(first,second); return 0; } 这里是我的问题: >如何使用新的查找商店?我期望做一些像std :: string * result = new std :: string;还是应该用新的来创建另外一个C风格的字符串? 解决方法
后者;该方法采用C风格的字符串,并且文本中没有任何内容表明它应该返回任何其他字符串.因此,函数的原型应该是char * cat(char const *,char const *).当然这不是你通常写功能的方式;手动内存管理在现代C中完全禁忌,因为它很容易出错.
在这个练习中,是的.在现实世界中,不,就像上面所说的,这完全是禁忌.实际上你会返回一个std :: string,而不是使用new来分配内存.如果你发现自己手动分配内存(并且假设它是很好的理由),那么你会把这个内存不是一个原始的指针,而是一个智能指针 – std :: unique_ptr或std :: shared_ptr. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |