zoukankan      html  css  js  c++  java
  • 碎碎念(3)

    1.栈取返回变量的值,变量的地址

    2.const

    3.二级指针

    第一种内存模型

    指针数组:它是一个数组,数组中的每个元素是指针类型
    char *p1 = "111";
    char *p2 = "222";
    char *p3 = "333";
    
    char *p[] = {"111","222","333"};
    

    第二种内存模型

    char a[][30] = {"111","222","333"};
    

    第三种内存模型

    char **p = (char **)malloc(3*sizeof(char *));
    for(int i=0; i<3; i++)
    {
        p[i] = (char *)malloc(10*sizeof(char));
        sprintf(p[i],"%d%d",i,i);
    }
    

    4.练习

    有字符串有以下特征(“abcd11111abcd2222abcdqqqqq”),求写一个函数接口,输出以下结果。
    把字符串替换成(dcba11111dcba2222dcbaqqqqq),并把结果传出。
    要求:
    	1. 正确实现接口和功能
    	2. 编写测试用例
    /*
    src:    原字符串
    dst:    生成的或需要填充的字符串
    sub:    需要查找的子字符串
    new_sub:提换的新子字符串
    
    return : 0 成功
    		-1 失败
    */
    int replaceSubstr(/* in */char *src, /* out */char** dst, 
                 /* in */char *sub,  /* in */char *new_sub);
                 
    
    过程:
    

    int replaceSubstr(/* in */char *src, /* out */char** dst,
                      /* in */char *sub,  /* in */char *new_sub)
    {
        // src = "22abcd11111abcd2222abcdqqqqq"
        // dst = "22dcba11111dcba2222dcbaqqqqq"
    
        if (src == NULL || dst == NULL || sub == NULL || new_sub == NULL)
        {
        	return -1;
        }
        
        char tmp[512] = { 0 }; //临时变量, 字符数组
        
        char *start = src; //记录查找的起点
        char *p = NULL;	//匹配字符串的首地址
    
        do 
        {
        	p = strstr(start, sub);
        	if (p != NULL)
        	{
        		int len = p - start;
        		if (len > 0)
        		{
        			//把匹配字符串前面的内容连接过去
        			strncat(tmp, start, len);
        		}
        
        		strncat(tmp, new_sub, strlen(new_sub)); //追加替换的新串
        
        		//更改查找的起点位置
        		start = p + strlen(sub);
        	}
        	else
        	{
        		strcat(tmp, start);
        
        		break;
        	}
        
        } while (*start != 0 );
    
        char *buf = malloc(strlen(tmp) + 1);
        strcpy(buf, tmp);
        *dst = buf;
        
        return 0;
    }
    

    5.常用函数

    strstr()、strctr()
    strcat()、strncat():字符串连接
    strcpy()、strncpy()
  • 相关阅读:
    调试某狐木马驱动被杀后系统卡死开机
    情景剧:C/C++中的未定义行为(undefined behavior)
    汇编概念辨析(Intel/AT&T syntax、GAS、NASM)
    软考准考证打印设置(IE1909)
    基于redis的分布式锁 RedissonLock解锁异常解决
    深入理解synchronized
    单利模式
    归并排序
    旧电脑硬盘回收
    萤石、乐橙、3D
  • 原文地址:https://www.cnblogs.com/EngineerZhang/p/9704085.html
Copyright © 2011-2022 走看看