來傳送子函數中的數組有多種方法——可以通過函數返回值返回地址傳遞數組;也可以通過函數輸入參數來傳遞數組;還可以通過全局變量來傳遞數組。
成都創新互聯公司專業成都網站設計、做網站,集網站策劃、網站設計、網站制作于一體,網站seo、網站優化、網站營銷、軟文平臺等專業人才根據搜索規律編程設計,讓網站在運行后,在搜索中有好的表現,專業設計制作為您帶來效益的網站!讓網站建設為您創造效益。
子函數本身可以直接在作用域中進行調用。
1、通過函數返回值返回地址傳遞數組。
聲明函數時需要聲明函數返回值類型為對應數組的地址,此時可以返回數組的地址,結合數組元素的地址關系可以傳遞整個數組,同時可以根據數組的特性傳遞多個參數。
2、通過輸入參數傳遞數組。
聲明函數時提供空輸入參數,調用函數時提供目標數組,即可以通過該數組調用子函數中的數組,該方法也可以用于傳遞多個參數。
3、通過全局變量來傳遞數組。
聲明全局變量用于存儲子函數中的數組,此時可以在全局變量作用域中讀取調用子函數的數組。
注意:子函數是C語言模塊化編程思想的核心,其方法是通過輸入接口和輸出接口實現對黑盒的調用,故對其內部數據的輸入和調用也需要通過輸入接口、輸出接口和程序的公共區域實現。
#include stdio.h
void sort(int a[20])
{ int i,j,k,t;
for(i=0;i19;i++)
{ k=i;
for(j=i+1;j20;j++)
if(a[k]a[j]) k=j;
t=a[k];a[k]=a[i];a[i]=t;
}
}
void main()
{ int a[20]={2,5,7,8,4,10,48,96,65,74,35,84,15,38,52,56,60,20,17,80};
sort(a);
}
沒問題
我調試過了
記得給我加分
函數返回值類型:(void)也就是不需要返回值。
函數名:abd
函數參數:int型數組
這里調用的時候,需要給函數abd一個參數,可以是數組名,也可以是一個指向int數組的指針。
注意數組參數為數組,是傳址,也就是說如果abd函數對arr形參操作會改變外部函數實參的值。
1、新建一個數組作為參數項目,如圖所示:
2、添加一個array.c文件,如圖所示:
3、包含stdio.h和stdlib.h頭文件,如圖所示:
4、輸入main函數主體及返回值,如圖所示:
5、定義一個數組arr,如圖所示:
6、定義一個function函數,如圖所示:
7、將數組作為參數傳遞給function函數,如圖所示:
8、運行程序,輸出結果,如圖所示:
一、數組可定義為全局變量,函數直接調用。
二、數組可定義為局部變量,再通過參數傳遞到函數中調用(實參傳數組名,表示數組首地址,也可通過指針或數組名+數字來傳遞數組局部地址)。
三、main函數想要調用函數返回的數組,可用static定義靜態變量或malloc定義動態數組(字符串常量也可返回使用,但局部變量,在函數調用結束會被釋放,不能作為返回地址使用)。
下面是演示代碼:
#include stdio.h
#include string.h
#include malloc.h
char str1[]="我是全局變量數組";
char *fun0(char str2[]);
char *fun1();
char *fun2();
int main()
{
char *str3=NULL,*str4=NULL,*str5=NULL;
char str2[]="我是main函數的局部數組變量";
str3=fun0(str2);
printf("str3:%s,fun函數調用結束,我的地址依然可以使用\n",str3);
str4=fun1();
printf("str4:%s,fun函數調用結束,我的地址依然可以使用\n",str4);
str5=fun2();
printf("str5:%s,fun函數調用結束,函數結束不會自動釋放\n",str5);
free(str5);
return 0;
}
char *fun0(char s[])
{
static char str3[]="我是fun函數申明的靜態數組變量";
printf("str1:%s,fun函數可以直接調用\n",str1);
printf("str2:%s,fun函數通過參數將我的地址傳進來\n",s);
return str3;
}
char *fun1()
{
char *str4="我是fun1函數的字符串常量";
return str4;
}
char *fun2()
{
int len;
char sTemp[]="這是一個臨時數組,之后用于給mallc申請的地址傳值,傳遞內容為:(我是fun函數通過mallic申請的數組)";
char *str5=NULL;
len=strlen(sTemp+63);
str5=(char *)malloc(sizeof(char)*len+1);
if(!str5)return NULL;
strcpy(str5,sTemp+63);
str5[len-2]=0;
return str5;
}
本文題目:c語言函數調用形參數組 C語言數組形參
網頁鏈接:http://m.kartarina.com/article8/hgjdop.html
成都網站建設公司_創新互聯,為您提供建站公司、網站建設、標簽優化、小程序開發、做網站、定制網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯