美文网首页
二级指针作为输入的情况

二级指针作为输入的情况

作者: 带着白卡去旅行 | 来源:发表于2018-09-06 20:32 被阅读6次

    strcmp函数[比较的是两字符串的ASCAII值]
    1)字符串1=字符串2,返回0
    (2)字符串1 > 字符串2,返回一个正整数
    (3)字符串1 < 字符串2,返回一个负整数。

    冒泡法的应用:

    
    void printMyarray11(char**myarray,int num)
    {
    
        int i = 0; int j = 0;
        //打印
        for (i = 0; i < num; i++)
        {
            printf("排序前:%s\n", myarray[i]);
        }
    
    
    
    }
    
    void mypaixu(char**mystr,int num)
    {
        
        char *tmp = NULL;
        int i = 0; int j = 0;
        for (i = 0; i < num; i++)
        {
            for (j = i; j < num; j++)
            {
                if (strcmp(mystr[i], mystr[j]) > 0)
                    //1)字符串1=字符串2,返回0
                    //(2)字符串1 > 字符串2,返回一个正整数
                    //(3)字符串1 < 字符串2,返回一个负整数。
                {
                    tmp = mystr[i];//注意  交换的是指针的值
                    mystr[i] = mystr[j];
                    mystr[j] = tmp;
                }
    
            }
        }
        return;
    }
    
    
    void main()
    {
        int num = 0;
        char*mysrtr[] = { "aaaa","ccc","aaa" };
        num = sizeof(mysrtr) / sizeof(mysrtr[0]);
        printf("排序前:\n");
        printMyarray11(mysrtr,num);
    
        mypaixu(mysrtr,num);
        printf("排序后:\n");
        printMyarray11(mysrtr,num);
        system("pause");
        return;
    }
    
    

    第二种情况 互换的是内存块
    特点:void myoutput(char myArray[10][30],int num)//此处调用(char**mystr,int num)不可行

    同理 void mypaixu2(char myArray[10][30],int num)

    易错点:
    //int num = 0;
    //num = sizeof(myArray) / sizeof(myArray[0]);这种写法错误 得出的是[10][30]
    (10行30列300个字节)/(sizeof(myArray[0])这时表示的是第一行的列30)所以结果是10;并非是我们想要的4。

    
    void myoutput(char myArray[10][30],int num)//此处调用(char**mystr,int num)不可行
    {
    
        for (int i = 0; i < num; i++)
        {
    
            printf("%s\n", myArray[i]);
        }
        return;
    }
    
    void mypaixu2(char myArray[10][30],int num)
    {
        char tmp[30];
        for (int i = 0; i < num; i++)
        {
            for (int j = i; j < num; j++)
            {
                if (strcmp(myArray[i], myArray[j]) > 0)
                {
                    strcpy(tmp, myArray[i]);//交换的是内存块
                    strcpy(myArray[i], myArray[j]);
                    strcpy(myArray[j], tmp);
                }
    
            }
    
        }
    
        return;
    }
    
    
    void main()
    {       int num=4;
        char buf[30];
        char myArray[10][30] = { "1111","ddddd","aaaaa","ccccc" };
        char tmp[30];
        
        
        //int num = 0;
        //num = sizeof(myArray) / sizeof(myArray[0]);这种写法错误  得出的是[10][30]
    (10行30列300个字节)/(sizeof(myArray[0])这时表示的是第一行的列30)所以结果是10;并非是我们想要的4。
        printf("排序前:\n");
        myoutput(myArray,num);
    
        mypaixu2(myArray,num);
    
        printf("排序后:\n");
        myoutput(myArray, num);
    
        system("pause");
           return;
    }
    

    相关文章

      网友评论

          本文标题:二级指针作为输入的情况

          本文链接:https://www.haomeiwen.com/subject/qglfgftx.html