zoukankan      html  css  js  c++  java
  • C++二级指针第一种内存模型(指针数组)


    二级指针第一种内存模型(指针数组)
    指针的输入特性:在主调函数里面分配内存,在被调用函数里面使用
    指针的输出特性:在被调用函数里面分配内存,主要是把运算结果甩出来

      指针数组

      在C语言C++语言中,数组元素全为指针的数组称为指针数组。一维指针数组的定义形式为:“类型名 *数组标识符[数组长度]”。
      例如,一个一维指针数组的定义:int *ptr_array[10]。
     
      如何理解指针数组
     
       指针数组是数组元素为指针的数组,其本质为数组。
       例如:*p[2]是指针数组,实质是一个数组,里面的两个元素都是指针 []的优先级比*的优先级高,p先与[]结合,形成数组p[2],有两个元素的数组,再与*结合,表示此数组      是指针类型的,每个数组元素相当于一个指针变量

      运用

       指针数组可以作为函数的参量使用,使用方式与普通数组类似。
       指针数组常适用于指向若干字符串,这样使字符串处理更加灵活方便。


     举例:

    #include "stdio.h"
    #include "stdlib.h"
    #include "string.h"
    
    void main()
    {
        int i = 0, j = 0;
        char *tmp = NULL;
    
        char *ArrayStr[] = {"ccccc", "aaaa", "bbbb","11111"};
    
        for (i=0; i<4; i++)
        {
            printf("%s 
    ", ArrayStr[i]);
        }
    
        //排序
    
        for (i=0; i<4; i++)
        {
            for (j=i+1; j<4; j++)
            {
                if (strcmp(ArrayStr[i],ArrayStr[j]) > 0)
                {
                    tmp = ArrayStr[i];
                    ArrayStr[i] = ArrayStr[j];
                    ArrayStr[j] = tmp;
                }
            }
        }
    
        for (i=0; i<4; i++)
        {
            printf("%s 
    ", ArrayStr[i]);
        }
        
        system("pause");
    }

      

    #include "stdio.h"
    #include "stdlib.h"
    #include "string.h"
    int    printfArr(char **ArrayStr, int iNum)
    {
        int i = 0;
        for (i=0; i<iNum; i++)
        {
            printf("%s 
    ", ArrayStr[i]);
        }
        return 0;
    }
    
    int sortArrayStr(char **ArrayStr, int iNum)
    {
        int i = 0, j = 0;
        char *tmp = NULL;
        //排序
    
        for (i=0; i<4; i++)
        {
            for (j=i+1; j<4; j++)
            {
                if (strcmp(ArrayStr[i],ArrayStr[j]) > 0)
                {
                    tmp = ArrayStr[i];
                    ArrayStr[i] = ArrayStr[j];
                    ArrayStr[j] = tmp;
                }
            }
        }
        return 0;
    }
    
    //二级指针第一种内存模型
    void main()
    {
        char *ArrayStr[] = {"ccccc", "aaaa", "bbbb","11111"};
    
        printf("排序之前
    ");
        printfArr(ArrayStr,4);
        sortArrayStr(ArrayStr, 4);
    
        printf("排序之后
    ");
        printfArr(ArrayStr,4);
    
        system("pause");
    }

      一维指针数组做函数参数会退化为二级指针

  • 相关阅读:
    Unity Shader 之 uv动画
    c++源文件后缀名问题
    Unity Shader 之 透明效果
    正则表达式
    Unity Shader基础
    Unity Shader 之 渲染流水线
    2017/11/22 Leetcode 日记
    2017/11/21 Leetcode 日记
    2017/11/13 Leetcode 日记
    2017/11/20 Leetcode 日记
  • 原文地址:https://www.cnblogs.com/CentForever/p/4640538.html
Copyright © 2011-2022 走看看