歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C++二級指針第一種內存模型(指針數組)

C++二級指針第一種內存模型(指針數組)

日期:2017/3/1 9:27:50   编辑:Linux編程

二級指針第一種內存模型(指針數組)
指針的輸入特性:在主調函數裡面分配內存,在被調用函數裡面使用
指針的輸出特性:在被調用函數裡面分配內存,主要是把運算結果甩出來

指針數組

  在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