首页 > 其他 > 详细

c .16.链接,比较代码讲解,分治策略与递归

时间:2021-04-02 15:03:12      阅读:14      评论:0      收藏:0      [点我收藏+]

1.链接代码

char* my_strcat(char* dist, const char* src)
{
    if (dist == nullptr || src == nullptr)
    {
        return dist;
    }
    char* cp = dist;
    while (*cp != \0) { ++cp; }
    while (*cp = *src)
    {
        cp++;
        src++;
    }
    return dist;
}
int main()
{
    char stra[30] = {"yhping"};
    char strb[30] = {"hello"};
    char strc[30] = {};
my_strcat(stra, strb);
printf("stra = %s \n", stra);
// stra => "yhpinghello"; // strb =>"hello"; }

   技术分享图片

   dist等于y,++到\0;

   若stra为空字符串,则变为拷贝函数,此函数第一步dist遇见\0,++遇见\0,c中以\0结尾

2.比较

1.int my_strcmp(const char* first, const char* second)
{
    assert(first != nullptr && second != nullptr);
    int k = 0;
    while ((k = *first - *second) == 0 && *first++ && *second++);//比较的优先级高于逻辑的优先级
    return k;
}
//yhping yhpa yhping
//yhping 相同,直到\0退出 yhping a小于i,小于0,退出 yhpa i大于a,大于0,退出
2.int my_strcmp(const char* first, const char* second) { assert(first != nullptr && second != nullptr); while (*first != \0 && *second != \0) { if (*first != *second) { break; } } return *first - *second; }
int main()
{
    char stra[30] = {"yhping"};
    char strb[30] = {"yhp"};
    char strc[30] = {};

 3.

int main()                              
{
    char stra[] = { "yhping" };
    char strb[] = { "yhping" };

    char* strc = "yhping";//加const称为静态常量
    char* strd = "yhping";//为字符串常量

    bool x = (stra == strb);
    bool y = (strc == strd);
    // x  // y;
    stra[0] = x; // ok//stra已近给x开辟空间,可以改变y为x
    //strc[0] = ‘x‘; // error;//strc指向的是字符串常量只允许读值不允许改值

    return 0;
}

 

   数组名代表数组首元素的地址,stra ,strb首地址不同,因此x错误

  字符串常量在data 区,strc,strd是指针,开辟四字节,存放字符串首地址

  技术分享图片                   技术分享图片

 4.  

 

 

   

 

 

   

c .16.链接,比较代码讲解,分治策略与递归

原文:https://www.cnblogs.com/xpei-1124/p/14610064.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!