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 ;
    }

  • 相关阅读:
    [King.yue]EXT.Grid行双击事件
    [King.yue]关于代码调试时的缓存问题的一个解决办法
    [Buffalo]ASP.NET MVC路由映射
    [Tommas] 如何创建自动化功能测试的基本原则
    [Tommas] Web测试中,各类web控件测试点总结
    [Tommas] ERP系统测试用例设计1(转)
    [King.yue]VS2012 无法启动IIS Express Web服务器的解决方案
    原创 html动态表格
    原创 SqlParameter 事务 批量数据插入
    jquery readio checked
  • 原文地址:https://www.cnblogs.com/yaozhenhua/p/9416510.html
Copyright © 2011-2022 走看看