栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【C语言】字符指针做函数参数

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【C语言】字符指针做函数参数

题目:

用函数调用实现字符串的复制。

方法一:用字符型指针变量做实参
#include
void copy_string(char from[], char to[])//形参作字符数组
{
	int i = 0;
	while (from[i] != '')
	{
		to[i] = from[i];
		i++;
	}
	to[i] = '';//赋值结束后要输入结束符''
}
int main()
{
	char a[50], b[50];
	gets(a);
	gets(b);
	char* from = a, * to = b;//from指向a数组首元素,to指向b数组首元素
	copy_string(from, to);//实参为字符指针变量
	puts(a);
	puts(b);
	return 0;
}

运行结果如下:

方法二:用字符指针变量做形参和实参
#include
void copy_string(char *from, char *to)//定义函数,形参为字符指针变量
{
	for (; *from != ''; from++, to++)
		*to = *from;
	*to = '';//赋值结束后要输入结束符''
}
int main()
{
	char* a = "I am a teacher.";//a是char*型指针变量
	char b[] = "You are a student.";//b是字符数组
	char* p = b;//是指针变量p指向b数组首元素
	copy_string(a, p);//调用copy_string函数,实参为指针变量
	puts(a);
	puts(b);
	return 0;
}

运行结果如下:

程序改进: 

对copy_string函数还可以改写得更精练一些

(1)将“*to=*from”这一语句放在while语句的表达式中,而且把赋值运算和判断是否为''的运算放在一个表达式中,先赋值后判断。

void copy_string(char* from, char* to)
{
	while ((*to = *from) != '')
	{
		to++;
		from++;
	}
	*to = '';
}

(2)把上面程序的to++和from++运算与*to=*from合并,它的执行过程时,先将*from赋值给*to,然后使to和from增值。

void copy_string(char* from, char* to)
{
	while ((*to++ = *from++) != '');
	*to = '';
}

(3)当*from不等于''时,将*from赋给*to,然后使to和from增值。

void copy_string(char* from, char* to)
{
	while (*from != '')
		*to++ = *from++;
	*to = '';
}

(4)由于字符可以用其ASCII码来代替,因此,“while(*from!='')”可以用“while(*from!=0)”代替(''的ASCII代码为0),而“*from!=0”又可简化为“*from”,所以整体可以化简为:

void copy_string(char* from, char* to)
{
	while (*from)
		*to++ = *from++;
	//	while ((*to++ = *from++));--上边语句的化简
	*to = '';
}

以上就是这次全部的分享。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/954907.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号