※【C】设计指针函数完成字符串的相加

本文介绍如何使用C语言设计一个函数指针来实现字符串的相加操作。探讨了两种方法:一种涉及内存拷贝和释放,另一种采用静态数组避免内存管理。文章还提到了潜在的问题,如字符串拷贝的理解、用户输入数组的处理,并分享了在编写过程中遇到的错误和学习经验。
摘要由CSDN通过智能技术生成

设计一个函数指针,完成字符串的相加并返回相加后字符串的地址

方式一(不推荐,总是会忘记free掉内存):
在这里插入图片描述

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

char * catstr(char * s1,char * s2);

int main(){
    char s1[] = "123456";
    char s2[] = "67890";
    char *str = NULL;

    printf("before:str = 0x%x\n",str);

    str = catstr(s1,s2);
 
    printf("after:str = 0x%x\n",str);
    printf("%s",str);
    free(str); //将malloc分配的存储空间释放掉
    return 0;
}


char * catstr(char * s1,char * s2){
    char * str, *p;
    int length = strlen(s1) + strlen(s2) +1;
    //长度加1是为了存放'\0'
    str = (char *) malloc(length * sizeof(char));
    memset(str,0,length * sizeof (char));

    p = str; //p指针和str指针同时指向分配的连续存储空间的首元素
    while(*s1){
        *p++ =
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值