C++PrimerPlus(第6版)中文版:Chapter7.5.2_strgback——返回C风格字符串的函数

本文介绍了如何通过函数返回指向新创建的字符串的指针,实现在C++中动态创建由指定字符重复n次的字符串,同时强调了内存管理的重要性。通过实例展示了`buildstr`函数的工作原理及在主函数中的应用,包括内存分配和释放。
摘要由CSDN通过智能技术生成

 函数无法返回一个字符串,但可以返回字符串的地址,这样做更高效。下面的程序中,builder()函数中,该函数返回一个指针。该函数接受两个参数:一个字符和一个数字。函数使用new 创建了一个长度与数字参数相等的字符串,将每个元素都初始化为该字符,然后返回指向新字符串的指针。

说白了就是创建了N 个‘s’,N个‘+’,等等。

// Chapter7.5.2_strgback.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//a function that return a pointer to char 
#include <iostream>
char* buildstr(char c,int n);//protype
int main()
{
	using namespace std;
	int times;
	char ch;
	cout << "Enter a character:";
	cin >> ch;
	cout << "Enter a integer:";
	cin >> times;
	char* ps = buildstr(ch,times);
	cout << ps << endl;
	delete[] ps;//free memory
	ps = buildstr('+', 20);//reuse pointer 
	cout << ps << "-Done-" << ps << endl;
	delete[] ps;
	return 0;   
}
//build string made of n c characters
char* buildstr(char c, int n)
{
	char* pstr = new char[n + 1];
	pstr[n] = '\0';//terminate string
	while (n-- > 0)
		pstr[n] = c;
	return pstr;
}

程序说明 

要创建包含n个字符的字符串,需要能够存储n+1个字符的空间,以便能够存储空值字符。

while (n-- > 0)
		pstr[n] = c;

上面的循环将循环n次,直到n减少到0,这将填充n个元素。在最后一个循环开始时,n的值为1,由于n--意味着先使用这个值,然后将其递减,因此while循环测试条件将对1和0进行比较,发现测试为true,循环继续。测试后,函数将n减为0,因此pstr【0】是最后一个被设置为c的元素。这个n--比较令人费解,经过作者解释,我们就看明白了。先做判断的时候用的是,n为1,1>0,循环继续,然后马上就是n--,这样n就为0了,pstr【n】,就是pstr【0】了。

在主程序中使用的时候,记得要用delete ,这个和函数中的new 是成对出现的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值