函數(shù)不可以定義為數(shù)組,可以用函數(shù)指針來(lái)操作。
創(chuàng)新互聯(lián)建站是一家專(zhuān)業(yè)提供滿(mǎn)洲企業(yè)網(wǎng)站建設(shè),專(zhuān)注與網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、H5高端網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為滿(mǎn)洲眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)的建站公司優(yōu)惠進(jìn)行中。
1.函數(shù)指針的數(shù)組定義方法:返回值類(lèi)型( * 指針變量名[Number]) (形參列表)。例如:double add(double a,double b){};double sub(double a,double b){};double mul(double a,double b){};double div1(double a,double b){};double (*oper_func[])(double, double) = {add,sub,mul,div1};//函數(shù)指針的數(shù)組定義2.函數(shù)指針是指向函數(shù)的指針變量。 因而“函數(shù)指針”本身首先應(yīng)是指針變量,只不過(guò)該指針變量指向函數(shù)。這正如用指針變量可指向整型變量、字符型、數(shù)組一樣,這里是指向函數(shù)。C在編譯時(shí),每一個(gè)函數(shù)都有一個(gè)入口地址,該入口地址就是函數(shù)指針?biāo)赶虻牡刂?。有了指向函?shù)的指針變量后,可用該指針變量調(diào)用函數(shù),就如同用指針變量可引用其他類(lèi)型變量一樣,在這些概念上是大體一致的。函數(shù)指針有兩個(gè)用途:調(diào)用函數(shù)和做函數(shù)的參數(shù)。3.函數(shù)指針的聲明方法為:返回值類(lèi)型( * 指針變量名) (形參列表);“返回值類(lèi)型”說(shuō)明函數(shù)的返回類(lèi)型,“( * 指針變量名)”中的括號(hào)不能省,括號(hào)改變了運(yùn)算符的優(yōu)先級(jí)。若省略整體則成為一個(gè)函數(shù)說(shuō)明,說(shuō)明了一個(gè)返回的數(shù)據(jù)類(lèi)型是指針的函數(shù),后面的“形參列表”表示指針變量指向的函數(shù)所帶的參數(shù)列表。例如:int func(int x); /* 聲明一個(gè)函數(shù) */int (*f) (int x); /* 聲明一個(gè)函數(shù)指針 */f = func; /* 將func函數(shù)的首地址賦給指針f */或者使用下面的方法將函數(shù)地址賦給函數(shù)指針:f = func;賦值時(shí)函數(shù)func不帶括號(hào),也不帶參數(shù),由于func代表函數(shù)的首地址,因此經(jīng)過(guò)賦值以后,指針f就指向函數(shù)func(x)的代碼的首地址。例子:
#includestdio.hint max(int x,int y){return (xy? x:y);}int main(){ int (*ptr)(int, int); int a, b, c; ptr = max; scanf("%d%d", a, b); c = (*ptr)(a,b); printf("a=%d, b=%d, max=%d", a, b, c); return 0;}
C語(yǔ)言數(shù)組的定義及引用1
1.1 一維數(shù)組的定義、初始化和引用
1.一維數(shù)組的定義方式為:
類(lèi)型說(shuō)明符 數(shù)組名[常量表達(dá)式]
(1)數(shù)組名的命名方法與變量名相同,遵循標(biāo)識(shí)符命名規(guī)則;
(2)數(shù)組是用方括號(hào)括起來(lái)的常量表達(dá)式,不能用圓括號(hào);
(3)常量表達(dá)式表示數(shù)組元素的個(gè)數(shù),即數(shù)組的長(zhǎng)度,數(shù)組的下標(biāo)從0開(kāi)始,下標(biāo)的最大值為:常量表達(dá)式-1;
(4)常量表達(dá)式中可以包括常量和符號(hào)常量,不能包括變量。
可以用賦值語(yǔ)句或輸入語(yǔ)句使數(shù)組中的元素得到值,但要占用運(yùn)行時(shí)間??梢允箶?shù)組在運(yùn)行之前初始化,即在編譯階段使之得到初值。
2.對(duì)數(shù)組初始化可以用以下方法實(shí)現(xiàn):
(1)在定義數(shù)組時(shí)對(duì)數(shù)組元素賦以初值。如:
static int a[10]={0,1,2,3,4,5,6,7,8,9};
經(jīng)過(guò)上面的定義和初始化后,a[0]=0,a[1]=1,…,a[9]=9。
(2)初始化時(shí)可以只對(duì)一部分元素賦初值。例如:
static int a[10]={0,1,2,3,4};
定義的數(shù)組有10個(gè)元素,但只對(duì)其中前5個(gè)元素賦了初值,后5個(gè)元素初值為0。
(3)如果想使一個(gè)數(shù)組的元素值全部為0,可以用下面的方法:
static int a[10]={0,0,0,0,0,0,0,0,0,0};
不能用:
static int a[10]={0*10};
如果對(duì)static型數(shù)組不賦初值,系統(tǒng)會(huì)對(duì)定義的所有數(shù)組元素自動(dòng)賦以0值。
(4)在對(duì)全部數(shù)組元素賦初值時(shí),可以不指定數(shù)組長(zhǎng)度。
3.一維數(shù)組的引用方法是:
C語(yǔ)言規(guī)定不能一次引用整個(gè)數(shù)組,引用時(shí)只能逐個(gè)元素引用,數(shù)組元素的表示形式為:
數(shù)組名[下標(biāo)]
下標(biāo)可以是整型常量或整型表達(dá)式。如:
a[0]=a[5]+a[7]-a[2*3];
1.2 二維數(shù)組的定義、初始化和引用
1.二維數(shù)組定義的一般形式為
類(lèi)型說(shuō)明符數(shù)組名[常量表達(dá)式][常量表達(dá)式]
C語(yǔ)言采用上述定義方法,我們可以把二維數(shù)組看做是一種特殊的一維數(shù)組:它的元素又是一維數(shù)組。在C語(yǔ)言中,二維數(shù)組中元素的排列順序是:先按行存放,再按列存放,即在內(nèi)存中先順序存放第一行的元素,再存放第二行的元素。
2.二維數(shù)組的初始化:二維數(shù)組可以用下面的方法初始化:
(1)分行給二維數(shù)組賦初值。如:
static int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
以上賦值把第一個(gè)花括號(hào)內(nèi)的數(shù)據(jù)賦給第一行元素,第二個(gè)花括號(hào)內(nèi)數(shù)據(jù)賦給第二元素…,即按行賦值。
(2)可以將所有的數(shù)據(jù)寫(xiě)在一個(gè)花括號(hào)內(nèi),按數(shù)組排列的順序?qū)Ω髟刭x值。
(3)可以對(duì)數(shù)組的部分元素賦初值。如:
static int a[3][4]={{1},{5},{9}};
以上賦值的結(jié)果是:數(shù)組第一列的元素分別賦了初值1,5,9,其余元素的值都是0。
(4)如果對(duì)二維數(shù)組的全部元素都賦初值,則定義數(shù)組時(shí)對(duì)第一維的長(zhǎng)度可以不指定,但第二維的長(zhǎng)度不能省。
3.二維數(shù)組的引用:二維數(shù)組的元素可以表示為:
數(shù)組[下標(biāo)][下標(biāo)]
在引用二維數(shù)組時(shí),必須是單個(gè)元素,不能是整個(gè)數(shù)組名。下標(biāo)可以是一個(gè)表達(dá)式,但不能是變量。如果下標(biāo)是一個(gè)表達(dá)式,注意表達(dá)式的值不能超出數(shù)組定義的上、下限。
C語(yǔ)言數(shù)組的定義及引用2
指針數(shù)組說(shuō)明的一般形式為:
類(lèi)型說(shuō)明符 *數(shù)組名[數(shù)組長(zhǎng)度]
其中類(lèi)型說(shuō)明符為指針值所指向的變量的類(lèi)型。例如:
int *pa[3]
表示pa是一個(gè)指針數(shù)組,它有三個(gè)數(shù)組元素,每個(gè)元素值都是一個(gè)指針,指向整型變量。
【例10-33】通??捎靡粋€(gè)指針數(shù)組來(lái)指向一個(gè)二維數(shù)組。 指針數(shù)組中的每個(gè)元素被賦予二維數(shù)組每一行的首地址,因此也可理解為指向一個(gè)一維數(shù)組。
main(){
int a[3][3]={1,2,3,4,5,6,7,8,9};
int *pa[3]={a[0],a[1],a[2]};
int *p=a[0];
int i;
for(i=0;i3;i++)
printf("%d,%d,%d ",a[i][2-i],*a[i],*(*(a+i)+i));
for(i=0;i3;i++)
printf("%d,%d,%d ",*pa[i],p[i],*(p+i));
}
本例程序中,pa是一個(gè)指針數(shù)組,三個(gè)元素分別指向二維數(shù)組a的各行。然后用循環(huán)語(yǔ)句輸出指定的數(shù)組元素。其中*a[i]表示i行0列元素值;*(*(a+i)+i)表示i行i列的元素值;*pa[i]表示i行0列元素值;由于p與a[0]相同,故p[i]表示0行i列的值;*(p+i)表示0行i列的值。讀者可仔細(xì)領(lǐng)會(huì)元素值的各種不同的表示方法。
應(yīng)該注意指針數(shù)組和二維數(shù)組指針變量的區(qū)別。這兩者雖然都可用來(lái)表示二維數(shù)組,但是其表示方法和意義是不同的。
二維數(shù)組指針變量是單個(gè)的變量,其一般形式中"(*指針變量名)"兩邊的括號(hào)不可少。而指針數(shù)組類(lèi)型表示的是多個(gè)指針(一組有序指針)在一般形式中"*指針數(shù)組名"兩邊不能有括號(hào)。例如:
int (*p)[3];
表示一個(gè)指向二維數(shù)組的指針變量。該二維數(shù)組的列數(shù)為3或分解為一維數(shù)組的長(zhǎng)度為3。
int *p[3]
表示p是一個(gè)指針數(shù)組,有三個(gè)下標(biāo)變量p[0],p[1],p[2]均為指針變量。
指針數(shù)組也常用來(lái)表示一組字符串,這時(shí)指針數(shù)組的每個(gè)元素被賦予一個(gè)字符串的首地址。指向字符串的指針數(shù)組的初始化更為簡(jiǎn)單。例如在例10.32中即采用指針數(shù)組來(lái)表示一組字符串。其初始化賦值為:
char *name[]={"Illagal day",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday"
};
完成這個(gè)初始化賦值之后,name[0]即指向字符串"Illegal day",name[1]指向"Monday"......。
指針數(shù)組也可以用作函數(shù)參數(shù)。
【例10-34】指針數(shù)組作指針型函數(shù)的參數(shù)。 在本例主函數(shù)中,定義了一個(gè)指針數(shù)組name,并對(duì)name 作了初始化賦值。其每個(gè)元素都指向一個(gè)字符串。然后又以name作為實(shí)參調(diào)用指針型函數(shù)day_name,在調(diào)用時(shí)把數(shù)組名name賦予形參變量name,輸入的整數(shù)i作為第二個(gè)實(shí)參賦予形參n。在day_ name函數(shù)中定義了兩個(gè)指針變量pp1和pp2,pp1被賦予name[0]的值(即*name),pp2被賦予name[n]的值即*(name+ n)。由條件表達(dá)式?jīng)Q定返回pp1或pp2指針給主函數(shù)中的指針變量ps。最后輸出i和ps的值。
main(){
static char *name[]={ "Illegal day",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday"
};
char *ps;
int i;
char *day_name(char *name[],int n);
printf("input Day No: ");
scanf("%d",i);
if(i0) exit(1);
ps=day_name(name,i);
printf("Day No:%2d--%s ",i,ps);
}
char *day_name(char *name[],int n){
char *pp1,*pp2;
pp1=*name;
pp2=*(name+n);
return((n1||n7)? pp1:pp2);
}
【例10-35】輸入5個(gè)國(guó)名并按字母順序排列后輸出?,F(xiàn)編程如下:
#include"string.h"
main(){
void sort(char *name[],int n);
void print(char *name[],int n);
static char *name[]={ "CHINA","AMERICA","AUSTRALIA","FRANCE","GERMAN"};
int n=5;
sort(name,n);
print(name,n);
}
void sort(char *name[],int n){
char *pt;
int i,j,k;
for(i=0;in-1;i++){
k=i;
for(j=i+1;jn;j++)
if(strcmp(name[k],name[j])0) k=j;
if(k!=i){
pt=name[i];
name[i]=name[k];
name[k]=pt;
}
}
}
void print(char *name[],int n){
int i;
for (i=0;in;i++) printf("%s ",name[i]);
}
說(shuō)明:
1) 在以前的例子中采用了普通的排序方法,逐個(gè)比較之后交換字符串的位置。交換字符串的物理位置是通過(guò)字符串復(fù)制函數(shù)完成的。反復(fù)的交換將使程序執(zhí)行的速度很慢,同時(shí)由于各字符串(國(guó)名)的長(zhǎng)度不同,又增加了存儲(chǔ)管理的負(fù)擔(dān)。用指針數(shù)組能很好地解決這些問(wèn)題。把所有的字符串存放在一個(gè)數(shù)組中,把這些字符數(shù)組的首地址放在一個(gè)指針數(shù)組中,當(dāng)需要交換兩個(gè)字符串時(shí),只須交換指針數(shù)組相應(yīng)兩元素的內(nèi)容(地址)即可,而不必交換字符串本身。
2) 本程序定義了兩個(gè)函數(shù),一個(gè)名為sort完成排序,其形參為指針數(shù)組name,即為待排序的各字符串?dāng)?shù)組的指針。形參n為字符串的'個(gè)數(shù)。另一個(gè)函數(shù)名為print,用于排序后字符串的輸出,其形參與sort的形參相同。主函數(shù)main中,定義了指針數(shù)組name 并作了初始化賦值。然后分別調(diào)用sort函數(shù)和print函數(shù)完成排序和輸出。值得說(shuō)明的是在sort函數(shù)中,對(duì)兩個(gè)字符串比較,采用了strcmp函數(shù),strcmp函數(shù)允許參與比較的字符串以指針?lè)绞匠霈F(xiàn)。name[k]和name[j]均為指針,因此是合法的。字符串比較后需要交換時(shí),只交換指針數(shù)組元素的值,而不交換具體的字符串,這樣將大大減少時(shí)間的開(kāi)銷(xiāo),提高了運(yùn)行效率。
C語(yǔ)言數(shù)組的定義及引用3
例子:輸出一個(gè) 4×4 的整數(shù)矩陣,代碼如下:
#include #include int main(){ int a1=20, a2=345, a3=700, a4=22; int b1=56720, b2=9999, b3=20098, b4=2; int c1=233, c2=205, c3=1, c4=6666; int d1=34, d2=0, d3=23, d4=23006783; printf("%-9d %-9d %-9d %-9d ", a1, a2, a3, a4); printf("%-9d %-9d %-9d %-9d ", b1, b2, b3, b4); printf("%-9d %-9d %-9d %-9d ", c1, c2, c3, c4); printf("%-9d %-9d %-9d %-9d ", d1, d2, d3, d4); system("pause"); return 0;}
運(yùn)行結(jié)果:
20 345 700 22
56720 9999 20098 2
233 205 1 6666
34 0 23 23006783
矩陣共有 16 個(gè)整數(shù),我們?yōu)槊總€(gè)整數(shù)定義了一個(gè)變量,也就是 16 個(gè)變量。那么,為了減少變量的數(shù)量,讓開(kāi)發(fā)更有效率,能不能為多個(gè)數(shù)據(jù)定義一個(gè)變量呢?比如,把每一行的整數(shù)放在一個(gè)變量里面,或者把 16 個(gè)整數(shù)全部都放在一個(gè)變量里面。
我們知道,要想把數(shù)據(jù)放入內(nèi)存,必須先要分配內(nèi)存空間。放入4個(gè)整數(shù),就得分配4個(gè)int類(lèi)型的內(nèi)存空間:
int a[4];
這樣,就在內(nèi)存中分配了4個(gè)int類(lèi)型的內(nèi)存空間,共 4×4=16 個(gè)字節(jié),并為它們起了一個(gè)名字,叫a。
我們把這樣的一組數(shù)據(jù)的集合稱(chēng)為數(shù)組(Array),它所包含的每一個(gè)數(shù)據(jù)叫做數(shù)組元素(Element),所包含的數(shù)據(jù)的個(gè)數(shù)稱(chēng)為數(shù)組長(zhǎng)度(Length),例如int a[4];就定義了一個(gè)長(zhǎng)度為4的整型數(shù)組,名字是a。
數(shù)組中的每個(gè)元素都有一個(gè)序號(hào),這個(gè)序號(hào)從0開(kāi)始,而不是從我們熟悉的1開(kāi)始,稱(chēng)為下標(biāo)(Index)。使用數(shù)組元素時(shí),指明下標(biāo)即可,形式為:
arrayName[index]
arrayName 為數(shù)組名稱(chēng),index 為下標(biāo)。例如,a[0] 表示第0個(gè)元素,a[3] 表示第3個(gè)元素。
接下來(lái)我們就把第一行的4個(gè)整數(shù)放入數(shù)組:
a[0]=20;
a[1]=345;
a[2]=700;
a[3]=22;
這里的0、1、2、3就是數(shù)組下標(biāo),a[0]、a[1]、a[2]、a[3] 就是數(shù)組元素。
我們來(lái)總結(jié)一下數(shù)組的定義方式:
dataType arrayName[length];
dataType 為數(shù)據(jù)類(lèi)型,arrayName 為數(shù)組名稱(chēng),length 為數(shù)組長(zhǎng)度。例如:
float m[12];
char ch[9];
需要注意的是:
1) 數(shù)組中每個(gè)元素的數(shù)據(jù)類(lèi)型必須相同,對(duì)于int a[4];,每個(gè)元素都必須為 int。
2) 數(shù)組長(zhǎng)度 length 最好是整數(shù)或者常量表達(dá)式,例如 10、20*4 等,這樣在所有編譯器下都能運(yùn)行通過(guò);如果 length 中包含了變量,例如 n、4*m 等,在某些編譯器下就會(huì)報(bào)錯(cuò),我們將在《C語(yǔ)言變長(zhǎng)數(shù)組》一節(jié)專(zhuān)門(mén)討論這點(diǎn)。
3) 訪(fǎng)問(wèn)數(shù)組元素時(shí),下標(biāo)的取值范圍為 0 ≤ index length,過(guò)大或過(guò)小都會(huì)越界,導(dǎo)致數(shù)組溢出,發(fā)生不可預(yù)測(cè)的情況,我們將在《C語(yǔ)言數(shù)組的靜態(tài)性、越界以及溢出》一節(jié)重點(diǎn)討論,請(qǐng)大家務(wù)必要引起注意。
4) 數(shù)組是一個(gè)整體,它的內(nèi)存是連續(xù)的,下面是int a[4];的內(nèi)存示意圖:
數(shù)組的初始化
上面的代碼是先定義數(shù)組再給數(shù)組賦值,我們也可以在定義數(shù)組的同時(shí)賦值:
int a[4] = {20, 345, 700, 22};
{ }中的值即為各元素的初值,各值之間用,間隔。
對(duì)數(shù)組賦初值需要注意以下幾點(diǎn):
1) 可以只給部分元素賦初值。當(dāng){ }中值的個(gè)數(shù)少于元素個(gè)數(shù)時(shí),只給前面部分元素賦值。例如:
int a[10]={12, 19, 22 , 993, 344};
表示只給 a[0]~a[4] 5個(gè)元素賦值,而后面5個(gè)元素自動(dòng)賦0值。
當(dāng)賦值的元素少于數(shù)組總體元素的時(shí)候,剩余的元素自動(dòng)初始化為 0:對(duì)于short、int、long,就是整數(shù)0;對(duì)于char,就是字符 '';對(duì)于float、double,就是小數(shù)0.0。
我們可以通過(guò)下面的形式將數(shù)組的所有元素初始化為 0:
int a[10] = {0};
char c[10] = {0};
float f[10] = {0};
由于剩余的元素會(huì)自動(dòng)初始化為0,所以只需要給第0個(gè)元素賦0值即可。
示例:輸出數(shù)組元素。
#include int main(){ int a[6] = {299, 34, 92, 100}; int b[6], i; //從控制臺(tái)輸入數(shù)據(jù)為每個(gè)元素賦值 for(i=0; i6; i++){ scanf("%d", b[i]); } //輸出數(shù)組元素 for(i=0; i6; i++){ printf("%d ", a[i]); } put' '); for(i=0; i6; i++){ printf("%d ", b[i]); } put' '); return 0;}
運(yùn)行結(jié)果:
90 100 33 22 568 10
299 34 92 100 0 0
90 100 33 22 568 10
2) 只能給元素逐個(gè)賦值,不能給數(shù)組整體賦值。例如給十個(gè)元素全部賦1值,只能寫(xiě)為:
int a[10]={1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
而不能寫(xiě)為:
int a[10]=1;
3) 如給全部元素賦值,那么在數(shù)組定義時(shí)可以不給出數(shù)組的長(zhǎng)度。例如:
int a[]={1,2,3,4,5};
等價(jià)于
int a[5]={1,2,3,4,5};
最后,我們借助數(shù)組來(lái)輸出一個(gè) 4×4 的矩陣:
#include #include int main(){ int a[4] = {20, 345, 700, 22}; int b[4] = {56720, 9999, 20098, 2}; int c[4] = {233, 205, 1, 6666}; int d[4] = {34, 0, 23, 23006783}; printf("%-9d %-9d %-9d %-9d ", a[0], a[1], a[2], a[3]); printf("%-9d %-9d %-9d %-9d ", b[0], b[1], b[2], b[3]); printf("%-9d %-9d %-9d %-9d ", c[0], c[1], c[2], c[3]); printf("%-9d %-9d %-9d %-9d ", d[0], d[1], d[2], d[3]); system("pause"); return 0;}
方法
有2
將該數(shù)組定義為全局變量,即:
int
g_arr;
void
fun()
{...}
void
main()
{...}
2.將該數(shù)組作為函數(shù)參數(shù)傳遞到自定義函數(shù)里,即:
void
fun(int
arr[])
{...}
void
main()
{
int
arr[10];
fun(arr);
}
函數(shù)不可以定義為數(shù)組,可以用函數(shù)指針來(lái)操作。
1.函數(shù)指針的數(shù)組定義方法:返回值類(lèi)型( * 指針變量名[Number]) (形參列表)。
例如:
double add(double a,double b){}
double sub(double a,double b){}
double mul(double a,double b){}
double div1(double a,double b){}
double (*oper_func[])(double, double) = {add,sub,mul,div1};//函數(shù)指針的數(shù)組定義。
2.函數(shù)指針是指向函數(shù)的指針變量。 因而“函數(shù)指針”本身首先應(yīng)是指針變量,只不過(guò)該指針變量指向函數(shù)。這正如用指針變量可指向整型變量、字符型、數(shù)組一樣,這里是指向函數(shù)。
C在編譯時(shí),每一個(gè)函數(shù)都有一個(gè)入口地址,該入口地址就是函數(shù)指針?biāo)赶虻牡刂?。有了指向函?shù)的指針變量后,可用該指針變量調(diào)用函數(shù)。
擴(kuò)展資料:
指針函數(shù)和函數(shù)指針的區(qū)別:
這兩個(gè)概念都是簡(jiǎn)稱(chēng),指針函數(shù)是指返回值是指針的函數(shù),即本質(zhì)是一個(gè)函數(shù)。我們知道函數(shù)都有返回類(lèi)型(如果不返回值,則為無(wú)值型),只不過(guò)指針函數(shù)返回類(lèi)型是某一類(lèi)型的指針。其定義格式如下所示:返回類(lèi)型標(biāo)識(shí)符*函數(shù)名稱(chēng)。
返回類(lèi)型可以是任何基本類(lèi)型和復(fù)合類(lèi)型。返回指針的函數(shù)的用途十分廣泛。事實(shí)上,每一個(gè)函數(shù),即使它不帶有返回某種類(lèi)型的指針,它本身都有一個(gè)入口地址,該地址相當(dāng)于一個(gè)指針。比如函數(shù)返回一個(gè)整型值,實(shí)際上也相當(dāng)于返回一個(gè)指針變量的值,不過(guò)這時(shí)的變量是函數(shù)本身而已,而整個(gè)函數(shù)相當(dāng)于一個(gè)“變量”。
參考資料:百度百科 -?函數(shù)指針
C語(yǔ)言支持一維數(shù)組和多維數(shù)組。如果一個(gè)數(shù)組的所有元素都不是數(shù)組,那么該數(shù)組稱(chēng)為一維數(shù)組。
在C語(yǔ)言中使用數(shù)組必須先進(jìn)行定義,一維數(shù)組的定義方式為:類(lèi)型說(shuō)明符; 數(shù)組名 ;[常量表達(dá)式]。
其中,類(lèi)型說(shuō)明符是任一種基本數(shù)據(jù)類(lèi)型或構(gòu)造數(shù)據(jù)類(lèi)型。數(shù)組名是用戶(hù)定義的數(shù)組標(biāo)識(shí)符,方括號(hào)中的常量表達(dá)式表示數(shù)據(jù)元素的個(gè)數(shù),也稱(chēng)為數(shù)組的長(zhǎng)度。例如:
int a[10]; ?/* 說(shuō)明整型數(shù)組a,有10個(gè)元素 */
float b[10], c[20]; ?/* 說(shuō)明實(shí)型數(shù)組b,有10個(gè)元素,實(shí)型數(shù)組c,有20個(gè)元素 */
char ch[20]; ?/* 說(shuō)明字符數(shù)組ch,有20個(gè)元素 */
對(duì)于數(shù)組類(lèi)型說(shuō)明應(yīng)注意以下幾點(diǎn):
1、數(shù)組的類(lèi)型實(shí)際上是指數(shù)組元素的取值類(lèi)型。對(duì)于同一個(gè)數(shù)組,其所有元素的數(shù)據(jù)類(lèi)型都是相同的。
2、數(shù)組名的書(shū)寫(xiě)規(guī)則應(yīng)符合標(biāo)識(shí)符的書(shū)寫(xiě)規(guī)定。
3、數(shù)組名不能與其它變量名相同。例如:
int a;
float a[10];
是錯(cuò)誤的。
4、方括號(hào)中常量表達(dá)式表示數(shù)組元素的個(gè)數(shù),如a[5]表示數(shù)組a有5個(gè)元素。但是其下標(biāo)從0開(kāi)始計(jì)算。因此5個(gè)元素分別為a[0], a[1], a[2], a[3], a[4]。
5、不能在方括號(hào)中用變量來(lái)表示元素的個(gè)數(shù),但是可以是符號(hào)常數(shù)或常量表達(dá)式。例如:
#define FD 5
// ...
int a[3+2],b[7+FD];
是合法的。但是下述說(shuō)明方式是錯(cuò)誤的。
int n=5;
int a[n];
6、允許在同一個(gè)類(lèi)型說(shuō)明中,說(shuō)明多個(gè)數(shù)組和多個(gè)變量。例如:
int a,b,c,d,k1[10],k2[20];
擴(kuò)展資料:
C語(yǔ)言是一門(mén)通用計(jì)算機(jī)編程語(yǔ)言,廣泛應(yīng)用于底層開(kāi)發(fā)。C語(yǔ)言的設(shè)計(jì)目標(biāo)是提供一種能以簡(jiǎn)易的方式編譯、處理低級(jí)存儲(chǔ)器、產(chǎn)生少量的機(jī)器碼以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的編程語(yǔ)言。
盡管C語(yǔ)言提供了許多低級(jí)處理的功能,但仍然保持著良好跨平臺(tái)的特性,以一個(gè)標(biāo)準(zhǔn)規(guī)格寫(xiě)出的C語(yǔ)言程序可在許多電腦平臺(tái)上進(jìn)行編譯,甚至包含一些嵌入式處理器(單片機(jī)或稱(chēng)MCU)以及超級(jí)電腦等作業(yè)平臺(tái)。
二十世紀(jì)八十年代,為了避免各開(kāi)發(fā)廠(chǎng)商用的C語(yǔ)言語(yǔ)法產(chǎn)生差異,由美國(guó)國(guó)家標(biāo)準(zhǔn)局為C語(yǔ)言制定了一套完整的美國(guó)國(guó)家標(biāo)準(zhǔn)語(yǔ)法,稱(chēng)為ANSI C,作為C語(yǔ)言最初的標(biāo)準(zhǔn)。[1]目前2011年12月8日,國(guó)際標(biāo)準(zhǔn)化組織(ISO)和國(guó)際電工委員會(huì)(IEC)發(fā)布的C11標(biāo)準(zhǔn)是C語(yǔ)言的第三個(gè)官方標(biāo)準(zhǔn),也是C語(yǔ)言的最新標(biāo)準(zhǔn),該標(biāo)準(zhǔn)更好的支持了漢字函數(shù)名和漢字標(biāo)識(shí)符,一定程度上實(shí)現(xiàn)了漢字編程。
C語(yǔ)言是一門(mén)面向過(guò)程的計(jì)算機(jī)編程語(yǔ)言,與C++,Java等面向?qū)ο蟮木幊陶Z(yǔ)言有所不同。
其編譯器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。
數(shù)組的定義
數(shù)組就是指用于存儲(chǔ)同一類(lèi)型數(shù)據(jù)的集合,一個(gè)數(shù)組實(shí)際上就是一連串的變量,數(shù)組按照使用可以分為一維數(shù)組、二維數(shù)組、多維數(shù)組
數(shù)組定義的方式
數(shù)組定義的方式有四種形式,分別是:
(1)類(lèi)型名[] 數(shù)組名;
(2)類(lèi)型名[] 數(shù)組名 = { 初始值列表 };
(3)類(lèi)型名[] 數(shù)組名 = new 類(lèi)型名[ 數(shù)組大小 ];
(4)類(lèi)型名[] 數(shù)組名 = new 類(lèi)型名[ 數(shù)組大小 ] { 初始值列表 };
數(shù)據(jù)類(lèi)型:指的是數(shù)組元素的數(shù)據(jù)類(lèi)型,常見(jiàn)的有整形、浮點(diǎn)型、與字符型等
數(shù)組名:是用來(lái)統(tǒng)一這組相同數(shù)據(jù)類(lèi)型元素的名稱(chēng),其命名規(guī)則和變量的相同