标签:调用者 函数 输入输出 rev len C语言 str 字符串 指针
【题目】
现有一个字符串"eeddccbbaa",要求写一个函数(接口),实现字符串的反转。
知识扩展
- 调用者与被调用者
在参考代码中我们可以看到 rev_str 函数和 main 函数,在 main 函数中调用了 rev_str 函数,那么我们就说 main 函数是调用者,rev_str 函数是被调用
者。 - 指针的输入输出
指针的输入输出是站在被调用者的角度上的,也就是站在此题答案中rev_str 函数的角度上。
rev_str 函数有两个参数 from,len,调用者 main函数在栈区给字符串“eeddccbbaa“分配了空间,通过指针 form 使得被调用者 rev_str 函数得到字符串”eeddccbbaa”的地址,像这种调用者分配空间让被调用者使用的指针参数我们称之为输入参数。而被调用者 rev_str 函数分配了空间通过指针 to 传回给调用者 main 函数,我们称之为指针的输出。
代码
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char* recv_str(char *from,int len)
{
// 判断字符串是否存在
if (from==NULL)
{
printf("from字符串不存在\n");
return NULL;
}
// 使得p 指向字符串的尾部
char *p = from + len -1;
// 为了使 len 的值一直保存的是字符串的长度
int l = len;
char *to = (char*)malloc(100); // 转化成的目的字符串
if (to==NULL)
{
printf("to字符串malloc失败!\n");
return NULL;
}
// 根据字符串的长度,让字符串 from 最后一个字符换到字符串 to 的第一个字符以此类推
for (;l>0;p--,to++,l--)
{
*to = *p;
}
// 使字符串的最后一个字符是‘\0’
*to = '\0';
// 使得 to 指针从新指向字符串的开头
to = to - len;
return to;
}
int main()
{
char from[100] = "eeddccbbaa";
int len = strlen(from); // 求出字符串长度
char *to = recv_str(from, len);
printf("%s", to); // 打印出字符串
return 0;
}
标签:调用者,函数,输入输出,rev,len,C语言,str,字符串,指针 来源: https://blog.csdn.net/weixin_45525272/article/details/118697230
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。