中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

定義函數(shù)數(shù)組c語言 定義數(shù)組 c語言

C語言數(shù)組的定義及引用

C語言數(shù)組的定義及引用1

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、成都微信小程序、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了青浦免費建站歡迎大家使用!

1.1 一維數(shù)組的定義、初始化和引用

1.一維數(shù)組的定義方式為:

類型說明符 數(shù)組名[常量表達(dá)式]

(1)數(shù)組名的命名方法與變量名相同,遵循標(biāo)識符命名規(guī)則;

(2)數(shù)組是用方括號括起來的常量表達(dá)式,不能用圓括號;

(3)常量表達(dá)式表示數(shù)組元素的個數(shù),即數(shù)組的長度,數(shù)組的下標(biāo)從0開始,下標(biāo)的最大值為:常量表達(dá)式-1;

(4)常量表達(dá)式中可以包括常量和符號常量,不能包括變量。

可以用賦值語句或輸入語句使數(shù)組中的元素得到值,但要占用運行時間??梢允箶?shù)組在運行之前初始化,即在編譯階段使之得到初值。

2.對數(shù)組初始化可以用以下方法實現(xiàn):

(1)在定義數(shù)組時對數(shù)組元素賦以初值。如:

static int a[10]={0,1,2,3,4,5,6,7,8,9};

經(jīng)過上面的定義和初始化后,a[0]=0,a[1]=1,…,a[9]=9。

(2)初始化時可以只對一部分元素賦初值。例如:

static int a[10]={0,1,2,3,4};

定義的數(shù)組有10個元素,但只對其中前5個元素賦了初值,后5個元素初值為0。

(3)如果想使一個數(shù)組的元素值全部為0,可以用下面的方法:

static int a[10]={0,0,0,0,0,0,0,0,0,0};

不能用:

static int a[10]={0*10};

如果對static型數(shù)組不賦初值,系統(tǒng)會對定義的所有數(shù)組元素自動賦以0值。

(4)在對全部數(shù)組元素賦初值時,可以不指定數(shù)組長度。

3.一維數(shù)組的引用方法是:

C語言規(guī)定不能一次引用整個數(shù)組,引用時只能逐個元素引用,數(shù)組元素的表示形式為:

數(shù)組名[下標(biāo)]

下標(biāo)可以是整型常量或整型表達(dá)式。如:

a[0]=a[5]+a[7]-a[2*3];

1.2 二維數(shù)組的定義、初始化和引用

1.二維數(shù)組定義的一般形式為

類型說明符數(shù)組名[常量表達(dá)式][常量表達(dá)式]

C語言采用上述定義方法,我們可以把二維數(shù)組看做是一種特殊的一維數(shù)組:它的元素又是一維數(shù)組。在C語言中,二維數(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}};

以上賦值把第一個花括號內(nèi)的數(shù)據(jù)賦給第一行元素,第二個花括號內(nèi)數(shù)據(jù)賦給第二元素…,即按行賦值。

(2)可以將所有的數(shù)據(jù)寫在一個花括號內(nèi),按數(shù)組排列的順序?qū)Ω髟刭x值。

(3)可以對數(shù)組的部分元素賦初值。如:

static int a[3][4]={{1},{5},{9}};

以上賦值的結(jié)果是:數(shù)組第一列的元素分別賦了初值1,5,9,其余元素的值都是0。

(4)如果對二維數(shù)組的全部元素都賦初值,則定義數(shù)組時對第一維的長度可以不指定,但第二維的長度不能省。

3.二維數(shù)組的引用:二維數(shù)組的元素可以表示為:

數(shù)組[下標(biāo)][下標(biāo)]

在引用二維數(shù)組時,必須是單個元素,不能是整個數(shù)組名。下標(biāo)可以是一個表達(dá)式,但不能是變量。如果下標(biāo)是一個表達(dá)式,注意表達(dá)式的值不能超出數(shù)組定義的上、下限。

C語言數(shù)組的定義及引用2

指針數(shù)組說明的一般形式為:

類型說明符 *數(shù)組名[數(shù)組長度]

其中類型說明符為指針值所指向的變量的類型。例如:

int *pa[3]

表示pa是一個指針數(shù)組,它有三個數(shù)組元素,每個元素值都是一個指針,指向整型變量。

【例10-33】通??捎靡粋€指針數(shù)組來指向一個二維數(shù)組。 指針數(shù)組中的每個元素被賦予二維數(shù)組每一行的首地址,因此也可理解為指向一個一維數(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是一個指針數(shù)組,三個元素分別指向二維數(shù)組a的各行。然后用循環(huán)語句輸出指定的數(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)會元素值的各種不同的表示方法。

應(yīng)該注意指針數(shù)組和二維數(shù)組指針變量的區(qū)別。這兩者雖然都可用來表示二維數(shù)組,但是其表示方法和意義是不同的。

二維數(shù)組指針變量是單個的變量,其一般形式中"(*指針變量名)"兩邊的括號不可少。而指針數(shù)組類型表示的是多個指針(一組有序指針)在一般形式中"*指針數(shù)組名"兩邊不能有括號。例如:

int (*p)[3];

表示一個指向二維數(shù)組的指針變量。該二維數(shù)組的列數(shù)為3或分解為一維數(shù)組的長度為3。

int *p[3]

表示p是一個指針數(shù)組,有三個下標(biāo)變量p[0],p[1],p[2]均為指針變量。

指針數(shù)組也常用來表示一組字符串,這時指針數(shù)組的每個元素被賦予一個字符串的首地址。指向字符串的指針數(shù)組的初始化更為簡單。例如在例10.32中即采用指針數(shù)組來表示一組字符串。其初始化賦值為:

char *name[]={"Illagal day",

"Monday",

"Tuesday",

"Wednesday",

"Thursday",

"Friday",

"Saturday",

"Sunday"

};

完成這個初始化賦值之后,name[0]即指向字符串"Illegal day",name[1]指向"Monday"......。

指針數(shù)組也可以用作函數(shù)參數(shù)。

【例10-34】指針數(shù)組作指針型函數(shù)的參數(shù)。 在本例主函數(shù)中,定義了一個指針數(shù)組name,并對name 作了初始化賦值。其每個元素都指向一個字符串。然后又以name作為實參調(diào)用指針型函數(shù)day_name,在調(diào)用時把數(shù)組名name賦予形參變量name,輸入的整數(shù)i作為第二個實參賦予形參n。在day_ name函數(shù)中定義了兩個指針變量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個國名并按字母順序排列后輸出?,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]);

}

說明:

1) 在以前的例子中采用了普通的排序方法,逐個比較之后交換字符串的位置。交換字符串的物理位置是通過字符串復(fù)制函數(shù)完成的。反復(fù)的交換將使程序執(zhí)行的速度很慢,同時由于各字符串(國名)的長度不同,又增加了存儲管理的負(fù)擔(dān)。用指針數(shù)組能很好地解決這些問題。把所有的字符串存放在一個數(shù)組中,把這些字符數(shù)組的首地址放在一個指針數(shù)組中,當(dāng)需要交換兩個字符串時,只須交換指針數(shù)組相應(yīng)兩元素的內(nèi)容(地址)即可,而不必交換字符串本身。

2) 本程序定義了兩個函數(shù),一個名為sort完成排序,其形參為指針數(shù)組name,即為待排序的各字符串?dāng)?shù)組的指針。形參n為字符串的'個數(shù)。另一個函數(shù)名為print,用于排序后字符串的輸出,其形參與sort的形參相同。主函數(shù)main中,定義了指針數(shù)組name 并作了初始化賦值。然后分別調(diào)用sort函數(shù)和print函數(shù)完成排序和輸出。值得說明的是在sort函數(shù)中,對兩個字符串比較,采用了strcmp函數(shù),strcmp函數(shù)允許參與比較的字符串以指針方式出現(xiàn)。name[k]和name[j]均為指針,因此是合法的。字符串比較后需要交換時,只交換指針數(shù)組元素的值,而不交換具體的字符串,這樣將大大減少時間的開銷,提高了運行效率。

C語言數(shù)組的定義及引用3

例子:輸出一個 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;}

運行結(jié)果:

20 345 700 22

56720 9999 20098 2

233 205 1 6666

34 0 23 23006783

矩陣共有 16 個整數(shù),我們?yōu)槊總€整數(shù)定義了一個變量,也就是 16 個變量。那么,為了減少變量的數(shù)量,讓開發(fā)更有效率,能不能為多個數(shù)據(jù)定義一個變量呢?比如,把每一行的整數(shù)放在一個變量里面,或者把 16 個整數(shù)全部都放在一個變量里面。

我們知道,要想把數(shù)據(jù)放入內(nèi)存,必須先要分配內(nèi)存空間。放入4個整數(shù),就得分配4個int類型的內(nèi)存空間:

int a[4];

這樣,就在內(nèi)存中分配了4個int類型的內(nèi)存空間,共 4×4=16 個字節(jié),并為它們起了一個名字,叫a。

我們把這樣的一組數(shù)據(jù)的集合稱為數(shù)組(Array),它所包含的每一個數(shù)據(jù)叫做數(shù)組元素(Element),所包含的數(shù)據(jù)的個數(shù)稱為數(shù)組長度(Length),例如int a[4];就定義了一個長度為4的整型數(shù)組,名字是a。

數(shù)組中的每個元素都有一個序號,這個序號從0開始,而不是從我們熟悉的1開始,稱為下標(biāo)(Index)。使用數(shù)組元素時,指明下標(biāo)即可,形式為:

arrayName[index]

arrayName 為數(shù)組名稱,index 為下標(biāo)。例如,a[0] 表示第0個元素,a[3] 表示第3個元素。

接下來我們就把第一行的4個整數(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ù)組元素。

我們來總結(jié)一下數(shù)組的定義方式:

dataType arrayName[length];

dataType 為數(shù)據(jù)類型,arrayName 為數(shù)組名稱,length 為數(shù)組長度。例如:

float m[12];

char ch[9];

需要注意的是:

1) 數(shù)組中每個元素的數(shù)據(jù)類型必須相同,對于int a[4];,每個元素都必須為 int。

2) 數(shù)組長度 length 最好是整數(shù)或者常量表達(dá)式,例如 10、20*4 等,這樣在所有編譯器下都能運行通過;如果 length 中包含了變量,例如 n、4*m 等,在某些編譯器下就會報錯,我們將在《C語言變長數(shù)組》一節(jié)專門討論這點。

3) 訪問數(shù)組元素時,下標(biāo)的取值范圍為 0 ≤ index length,過大或過小都會越界,導(dǎo)致數(shù)組溢出,發(fā)生不可預(yù)測的情況,我們將在《C語言數(shù)組的靜態(tài)性、越界以及溢出》一節(jié)重點討論,請大家務(wù)必要引起注意。

4) 數(shù)組是一個整體,它的內(nèi)存是連續(xù)的,下面是int a[4];的內(nèi)存示意圖:

數(shù)組的初始化

上面的代碼是先定義數(shù)組再給數(shù)組賦值,我們也可以在定義數(shù)組的同時賦值:

int a[4] = {20, 345, 700, 22};

{ }中的值即為各元素的初值,各值之間用,間隔。

對數(shù)組賦初值需要注意以下幾點:

1) 可以只給部分元素賦初值。當(dāng){ }中值的個數(shù)少于元素個數(shù)時,只給前面部分元素賦值。例如:

int a[10]={12, 19, 22 , 993, 344};

表示只給 a[0]~a[4] 5個元素賦值,而后面5個元素自動賦0值。

當(dāng)賦值的元素少于數(shù)組總體元素的時候,剩余的元素自動初始化為 0:對于short、int、long,就是整數(shù)0;對于char,就是字符 '';對于float、double,就是小數(shù)0.0。

我們可以通過下面的形式將數(shù)組的所有元素初始化為 0:

int a[10] = {0};

char c[10] = {0};

float f[10] = {0};

由于剩余的元素會自動初始化為0,所以只需要給第0個元素賦0值即可。

示例:輸出數(shù)組元素。

#include int main(){ int a[6] = {299, 34, 92, 100}; int b[6], i; //從控制臺輸入數(shù)據(jù)為每個元素賦值 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;}

運行結(jié)果:

90 100 33 22 568 10

299 34 92 100 0 0

90 100 33 22 568 10

2) 只能給元素逐個賦值,不能給數(shù)組整體賦值。例如給十個元素全部賦1值,只能寫為:

int a[10]={1, 1, 1, 1, 1, 1, 1, 1, 1, 1};

而不能寫為:

int a[10]=1;

3) 如給全部元素賦值,那么在數(shù)組定義時可以不給出數(shù)組的長度。例如:

int a[]={1,2,3,4,5};

等價于

int a[5]={1,2,3,4,5};

最后,我們借助數(shù)組來輸出一個 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;}

c語言中能不能定義函數(shù)數(shù)組

函數(shù)不可以定義為數(shù)組,可以用函數(shù)指針來操作。

1.函數(shù)指針的數(shù)組定義方法:返回值類型( * 指針變量名[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)是指針變量,只不過該指針變量指向函數(shù)。這正如用指針變量可指向整型變量、字符型、數(shù)組一樣,這里是指向函數(shù)。

C在編譯時,每一個函數(shù)都有一個入口地址,該入口地址就是函數(shù)指針?biāo)赶虻牡刂?。有了指向函?shù)的指針變量后,可用該指針變量調(diào)用函數(shù)。

擴(kuò)展資料:

指針函數(shù)和函數(shù)指針的區(qū)別:

這兩個概念都是簡稱,指針函數(shù)是指返回值是指針的函數(shù),即本質(zhì)是一個函數(shù)。我們知道函數(shù)都有返回類型(如果不返回值,則為無值型),只不過指針函數(shù)返回類型是某一類型的指針。其定義格式如下所示:返回類型標(biāo)識符*函數(shù)名稱。

返回類型可以是任何基本類型和復(fù)合類型。返回指針的函數(shù)的用途十分廣泛。事實上,每一個函數(shù),即使它不帶有返回某種類型的指針,它本身都有一個入口地址,該地址相當(dāng)于一個指針。比如函數(shù)返回一個整型值,實際上也相當(dāng)于返回一個指針變量的值,不過這時的變量是函數(shù)本身而已,而整個函數(shù)相當(dāng)于一個“變量”。

參考資料:百度百科 -?函數(shù)指針

C語言中如何定義數(shù)組

C語言中,同變量一樣;數(shù)組也必須先定義后使用。

一維數(shù)組的定義形式:

類型標(biāo)識符? 數(shù)組名[常量表達(dá)式];例如int a[10]; ? 其中a為地址常量。

如變量的定義一樣,int a ;double a;float a等;數(shù)組的定義只是把后面的變量名改為數(shù)組名而已。

int a[10]就是定義了一個數(shù)組名為a的數(shù)組;此數(shù)組有10個元素。其中各元素從a[0]到a[9];并沒有a[10]元素。下面列舉一個。

擴(kuò)展資料

常量表達(dá)式可以包括字面常量和符號常量;但不能包含變量。例如對下面定義是錯誤的

int n=5

int a[n]

可以修改為

#define N 5

int a[N]

其中對二維及多位數(shù)組定義可以類推

int? a[x][y][z][...]其中 x,y,z為數(shù)字。

參考資料

百度百科-C語言

C語言用二維數(shù)組定義一個自定義函數(shù)數(shù)組的最大值?

以下是一個C語言程序,用二維數(shù)組定義一個自定義函數(shù)數(shù)組,并計算數(shù)組中的最大值:

```c

#include stdio.h

// 自定義函數(shù),用于計算一個整數(shù)數(shù)組的最大值

int array_max(int arr[], int len) {

int max = arr[0];

for (int i = 1; i len; i++) {

if (arr[i] max) {

max = arr[i];

}

}

return max;

}

int main() {

// 定義一個二維數(shù)組,包含5個一維數(shù)組,每個一維數(shù)組包含6個整數(shù)

int arr[5][6] = {

{1, 2, 3, 4, 5, 6},

{6, 5, 4, 3, 2, 1},

{2, 4, 6, 8, 10, 12},

{3, 6, 9, 12, 15, 18},

{9, 8, 7, 6, 5, 4}

};

// 定義一個函數(shù)指針數(shù)組,用于存儲array_max函數(shù)的地址

int (*func_array[5])(int[], int) = {array_max, array_max, array_max, array_max, array_max};

// 遍歷二維數(shù)組,依次調(diào)用函數(shù)指針數(shù)組中的函數(shù),計算每個一維數(shù)組的最大值

for (int i = 0; i 5; i++) {

int max = (*func_array[i])(arr[i], 6);

printf("Array %!d(MISSING) max value: %!d(MISSING)\n", i, max);

}

return 0;

}

```

在這個程序中,首先定義了一個包含5個一維數(shù)組的二維數(shù)組arr。然后,定義了一個函數(shù)指針數(shù)組func_array,用于存儲array_max函數(shù)的地址。接下來,通過遍歷二維數(shù)組arr,依次調(diào)用函數(shù)指針數(shù)組中的函數(shù),計算每個一維數(shù)組的最大值,并輸出結(jié)果。

這個程序中的函數(shù)指針數(shù)組可以用于存儲任意數(shù)量的自定義函數(shù),并且可以在需要時動態(tài)地改變其內(nèi)容。

本文名稱:定義函數(shù)數(shù)組c語言 定義數(shù)組 c語言
標(biāo)題路徑:http://www.rwnh.cn/article12/ddgojdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、營銷型網(wǎng)站建設(shè)網(wǎng)站改版、App開發(fā)搜索引擎優(yōu)化、定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)
会昌县| 深泽县| 丰原市| 恩施市| 南宫市| 名山县| 江陵县| 栾城县| 买车| 乌拉特中旗| 渝北区| 崇文区| 武隆县| 常山县| 二连浩特市| 禹州市| 秭归县| 千阳县| 新巴尔虎右旗| 化德县| 嵩明县| 黑河市| 宝应县| 大方县| 鹤山市| 新泰市| 松潘县| 饶平县| 蛟河市| 赞皇县| 徐水县| 连平县| 岳阳县| 久治县| 麻阳| 兴化市| 金沙县| 崇左市| 海宁市| 栖霞市| 岑巩县|