第32課 數組指針和指針數組分析

數組類型
·C語言中的數組有本身的特定的類型
·數組的類型有元素類型和數組大小共同決定
例子:int array[5]的類型爲int[5]
定義數組類型
·C語言中經過typedef爲數組類型重命名
typedef type(name)[size];
-數組類型
typedef int(AINT5)[5];
typedef float(AFLOAT10)[10];
-數組定義:
AINT5 iArray;
AFLOAT10 fArray;
數組指針
·數組指針用於指向一個數組
·數組名是數組首元素的起始地址,但並非數組的起始地址
·經過將取地址&做用於數組名能夠獲得數組的起始地址
·可經過數組類型定義數組指針ArrayType*pointer;
·能夠直接定義:type(*pointer)[n];
pointer爲數組指針變量名
type爲指向的數組的類型
n爲指向的數組的大小
例子32-1:算法

`#include<stdio.h>
typedef int(AINT5)[5];
//AINT5表明數組類型,有五個元素,每一個元素類型是int
typedef float(AFLOAT10)[10];
//AFLOAT10表明數組類型,有10個元素,每一個元素類型爲float
typedef char(ACHAR9)[9];
//ACHAR9表明數組類型,有9個元素,每一個元素類型爲char
int main()
{數組

AINT5 a1;
//a1爲數組,a1所表明的數組爲5個元素,每一個元素類型爲int
float fArray[10];
AFLOAT10* pf = &fArray;
//pf爲一個數組指針,
ACHAR9 cArray;
char(*pc)[9] = &cArray;
//char(*pcw)[4] = cArray;
int i = 0;
printf("%d, %d\n",sizeof(AINT5), sizeof(a1));
for(i = 0;i < 10; i++)
{
    (*pf)[i] = i;  //fArray[i] = i;
}
for(i = 0; i < 10; i++)
{
    printf("%f\n",fArray[i]);
}
printf("%p,%p,%p\n",&cArray,pc+1); //pc+1  ==  (unsigned int)pc + sizeof(cArray) ==  (unsigned int)pc + 9
return 0;

}`
輸出結果:
20, 20
0.000000
1.000000
2.000000
3.000000
4.000000
5.000000
6.000000
7.000000
8.000000
9.000000
00EFFDD8,00EFFDE1
指針數組
·指針數組是一個普通的數組
·指針數組中每一個元素爲一個指針
·指針數組的定義:type*pArray[n];函數

type* 爲數組每一個元素的類型
pArray爲數組名
n爲數組大小指針

float a[3]→floatcode

float*
        float*

指針數組的應用例子32-2:字符串

在函數裏面全部的數組退化爲指針
strcmp函數是string compare(字符串比較)的縮寫,用於比較兩個字符串並根據比較結果返回整數。基本形式爲strcmp(str1,str2),若str1=str2,則返回零;若str1<str2,則返回負數;若str1>str2,則返回正數
`string

include "stdio.h"

include "string.h"

define DIM(a) (sizeof(a)/sizeof(*a))

int lookup_keyword(const char key,const char table[],const int size)
{it

int ret = -1;
int i = 0;
for(i = 0;i < size; i++)
{
    if(strcmp(key,table[i]) == 0)
    {
        ret = i;
        break;
    }
}
return ret;

}
int mian()
{io

const char* keyword[] = {
"do","for","if","register","return","switch","while","case","static"
};
printf("%d\n",lookup_keyword("return",keyword,DIM(keyword)));
printf("%d\n",lookup_keyword("main",keyword,DIM(keyword)));
return 0;

}
`
輸出結果:
4,
-1table

小結:·數組的類型由元素類型和數組大小共同決定·數組指針是一個指針,指向對應類型的數組·指針數組是一個數組,其中每一個元素都爲指針·數組指針遵循指針運算法則·指針數組擁有C語言數組的各類特性

相關文章
相關標籤/搜索