二級指針第一種內存模型(指針數組)
指針的輸入特性:在主調函數裡面分配內存,在被調用函數裡面使用
指針的輸出特性:在被調用函數裡面分配內存,主要是把運算結果甩出來
指針數組
在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");
}
一維指針數組做函數參數會退化為二級指針