數(shù)組作為參數(shù)是按地址傳遞的
創(chuàng)新互聯(lián)建站是一家以網(wǎng)絡(luò)技術(shù)公司,為中小企業(yè)提供網(wǎng)站維護(hù)、成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、網(wǎng)站備案、服務(wù)器租用、域名申請、軟件開發(fā)、微信平臺小程序開發(fā)等企業(yè)互聯(lián)網(wǎng)相關(guān)業(yè)務(wù),是一家有著豐富的互聯(lián)網(wǎng)運(yùn)營推廣經(jīng)驗(yàn)的科技公司,有著多年的網(wǎng)站建站經(jīng)驗(yàn),致力于幫助中小企業(yè)在互聯(lián)網(wǎng)讓打出自已的品牌和口碑,讓企業(yè)在互聯(lián)網(wǎng)上打開一個(gè)面向全國乃至全球的業(yè)務(wù)窗口:建站溝通電話:18982081108
數(shù)組名就是數(shù)組的首地址。因此在數(shù)組名作函數(shù)參數(shù)時(shí)所進(jìn)行的傳送只是地址的傳送, 也就是說把實(shí)參數(shù)組的首地址賦予形參數(shù)組名。形參數(shù)組名取得該首地址之后,也就等于有了實(shí)在的數(shù)組。實(shí)際上是形參數(shù)組和實(shí)參數(shù)組為同一數(shù)組,共同擁有一段內(nèi)存空間。
調(diào)用時(shí)把【】去掉,表示掉用這個(gè)數(shù)組的所有元素,數(shù)組的名稱表示數(shù)組第一個(gè)元素的地址。
數(shù)組的定義可以寫成:
int
table[]={1,2,3,}
或者table[3],不能寫成table[],因?yàn)橄到y(tǒng)在定義數(shù)組時(shí)就給數(shù)組分配了地址,table[]沒有確定元素的個(gè)數(shù),不能分配地址空間。
但是作為形參,可以這樣寫,void
tab(int
table[])
,不知道為什么,呵呵
很簡單的,數(shù)組作為函數(shù)參數(shù)傳遞的時(shí)候只要是數(shù)組名就可以了,因?yàn)閿?shù)組名本身就是數(shù)組的首地址 .給個(gè)程序看看
#includestdio.h
#define N 3
int array[N][N];
void main()
{
//在主函數(shù)內(nèi)聲明被調(diào)函數(shù)
void convert(int array[][3]);
int i,j;
printf("輸入數(shù)組:\n");
for(j=0;jN;j++)
for(i=0;iN;i++)
scanf("%d",array[i][j]);
printf("\n");
for(j=0;jN;j++)
{
for(i=0;iN;i++)
printf("%d\t",array[i][j]);
printf("\n");
}
//調(diào)用矩陣轉(zhuǎn)置函數(shù)
convert(array);
printf("\n");
for(i=0;iN;i++)
{
for(j=0;jN;j++)
printf("%d\t",array[i][j]);
printf("\n");
}
}
void convert(int array[][3])
{
int i,j,t;
for(i=0;iN;i++)
for(j=0;jN;j++)//設(shè)置數(shù)組中轉(zhuǎn)置矩陣元素交換
{
t=array[i][j];
array[i][j]=array[j][i];
array[j][i]=t;
}
}
一維數(shù)組的元素作為函數(shù)實(shí)參,與同類型的簡單變量作為實(shí)參一樣,是單向的值傳遞,即數(shù)組元素的值傳給形參,從而形參是改變不影響實(shí)參
數(shù)組名代表著整個(gè)數(shù)組的地址,如果一維數(shù)組的名字作為函數(shù)實(shí)參,傳遞的是整個(gè)數(shù)組,即形參數(shù)組和實(shí)參數(shù)組完全相同,是存放在同一存儲空間的同一個(gè)數(shù)組。這樣形參數(shù)組
修改時(shí),實(shí)參數(shù)組也同時(shí)被修改了。形參數(shù)組的元素個(gè)數(shù)可以省略。
#includestdio.h
//數(shù)組作為函數(shù)參數(shù),可以省略元素個(gè)數(shù)
//數(shù)組作為函數(shù)參數(shù),傳遞是整個(gè)數(shù)組的地址,修改了函數(shù)形參數(shù)組元素的值,會影響到外面的實(shí)參數(shù)組
void change(int array[])
{
printf("array ==%p\n",array);
array[0] = 100;
}
int main()
{
int ages[6] = {10,11,13,15,11,18};
printf("array ==%p\n",ages);
change(ages);
printf("%d\n",ages[0]);
return 0;
}
輸出結(jié)果為: array ==0x7fff5be26c00
array ==0x7fff5be26c00
100