二级指针做输入_第2种内存模型

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


//打印  排序 
//封装成函数
void main31()
{
    int i = 0, j = 0;
    int num = 4;
    char myBuf[30];
    char tmpBuf[30];
    char myArray[10][30] = {"aaaaaa", "ccccc", "bbbbbbb", "1111111111111"};

    //打印 
    printf("排序之前\n");
    for (i=0; i<num; i++)
    {
        printf("%s\n", myArray[i]);
    }

    for (i=0; i<num; i++)
    {
        for (j=i+1; j<num; j++)
        {
            if (strcmp (myArray[i],  myArray[j]) > 0)
            {
                strcpy(tmpBuf, myArray[i]);  //交换的是内存块
                strcpy(myArray[i], myArray[j]);
                strcpy(myArray[j], tmpBuf);
            }
        }
    }

    //打印 
    printf("排序之后\n");
    for (i=0; i<num; i++)
    {
        printf("%s\n", myArray[i]);
    }


    printf("hello...\n");
    system("pause");
    return ;
}

//问题的本质是:dm03_二级指针做输入_第2种内存模型 的 myArray + 1
                // dm03_二级指针做输入_第1种内存模型   myArray + 1 不一样 ;
//指针的步长不一样  指针所指向的内存空间的数据类不一样 。。。。
void printMyArray02_err(char **myArray, int num)
{
    int i = 0;
    for (i=0; i<num; i++)
    {
        //printf("%s \n", myArray[i]);
        printf("%s \n", *(myArray+i) );  //
    }
}

void printMyArray02(char myArray[10][30], int num)
{
    int i = 0;
    for (i=0; i<num; i++)
    {
        //printf("%s \n", myArray[i]);
        printf("%s \n", *(myArray+i) );  //
    }
}



//交换的是内存块。。。。。。。。
void sortMyArray02(char myArray[10][30], int num)
{
    int i, j = 0;
    char tmpBuf[30];

    for (i=0; i<num; i++)
    {
        for (j=i+1; j<num; j++)
        {
            if (strcmp (myArray[i],  myArray[j]) > 0)
            {
                strcpy(tmpBuf, myArray[i]);  //交换的是内存块
                strcpy(myArray[i], myArray[j]);
                strcpy(myArray[j], tmpBuf);
            }
        }
    }

}

//打印  排序 
//封装成函数
void main333()
{
    int i = 0, j = 0;
    int num = 4;
    char myBuf[30];
    char tmpBuf[30];
    char myArray[10][30] = {"aaaaaa", "ccccc", "bbbbbbb", "1111111111111"};

    //myArray: 编译器只会关心:有10行 ,每行30列。。。。。干什么?myArray+1  多维数组名的本质,

    {
        int len1 = sizeof(myArray);
        int len2 = sizeof(myArray[0]);
        int size = len1/len2;
        printf("len1:%d , len2:%d  size:%d \n", len1, len2, size);

    }
    

    //打印 
    printf("排序之前\n");

    printMyArray02(myArray, num);
    

    sortMyArray02(myArray, num);

    //打印 
    printf("排序之后\n");
    printMyArray02(myArray, num);

    printf("hello...\n");
    system("pause");
    return ;
}

猜你喜欢

转载自www.cnblogs.com/yaozhenhua/p/9416510.html
今日推荐