zoukankan      html  css  js  c++  java
  • 二级指针做输入_第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("排序之前
    ");
        for (i=0; i<num; i++)
        {
            printf("%s
    ", 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("排序之后
    ");
        for (i=0; i<num; i++)
        {
            printf("%s
    ", myArray[i]);
        }
    
    
        printf("hello...
    ");
        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 
    ", myArray[i]);
            printf("%s 
    ", *(myArray+i) );  //
        }
    }
    
    void printMyArray02(char myArray[10][30], int num)
    {
        int i = 0;
        for (i=0; i<num; i++)
        {
            //printf("%s 
    ", myArray[i]);
            printf("%s 
    ", *(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 
    ", len1, len2, size);
    
        }
        
    
        //打印 
        printf("排序之前
    ");
    
        printMyArray02(myArray, num);
        
    
        sortMyArray02(myArray, num);
    
        //打印 
        printf("排序之后
    ");
        printMyArray02(myArray, num);
    
        printf("hello...
    ");
        system("pause");
        return ;
    }

  • 相关阅读:
    第六章 函数与宏定义实验报告
    第三次实验报告
    第五章 循环结构课后反思
    第二次实验报告
    第一次实验报告
    安装OpenCV时提示缺少boostdesc_bgm.i文件的问题解决方案
    2020软件工程最后一次作业
    2020软件工程第四次作业
    2020软件工程第三次作业
    2020软件工程第二次作业
  • 原文地址:https://www.cnblogs.com/yaozhenhua/p/9416510.html
Copyright © 2011-2022 走看看