歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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 \n", 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 \n", 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 \n", 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("排序之前\n");
    printfArr(ArrayStr,4);
    sortArrayStr(ArrayStr, 4);

  printf("排序之後\n");
    printfArr(ArrayStr,4);

  system("pause");
}

  一維指針數組做函數參數會退化為二級指針

Copyright © Linux教程網 All Rights Reserved