一、數(shù)組可定義為全局變量,函數(shù)直接調用。
創(chuàng)新互聯(lián)長期為上千家客戶提供的網(wǎng)站建設服務,團隊從業(yè)經(jīng)驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為清河企業(yè)提供專業(yè)的成都網(wǎng)站設計、網(wǎng)站制作,清河網(wǎng)站改版等技術服務。擁有十載豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
二、數(shù)組可定義為局部變量,再通過參數(shù)傳遞到函數(shù)中調用(實參傳數(shù)組名,表示數(shù)組首地址,也可通過指針或數(shù)組名+數(shù)字來傳遞數(shù)組局部地址)。
三、main函數(shù)想要調用函數(shù)返回的數(shù)組,可用static定義靜態(tài)變量或malloc定義動態(tài)數(shù)組(字符串常量也可返回使用,但局部變量,在函數(shù)調用結束會被釋放,不能作為返回地址使用)。
下面是演示代碼:
#include stdio.h
#include string.h
#include malloc.h
char str1[]="我是全局變量數(shù)組";
char *fun0(char str2[]);
char *fun1();
char *fun2();
int main()
{
char *str3=NULL,*str4=NULL,*str5=NULL;
char str2[]="我是main函數(shù)的局部數(shù)組變量";
str3=fun0(str2);
printf("str3:%s,fun函數(shù)調用結束,我的地址依然可以使用\n",str3);
str4=fun1();
printf("str4:%s,fun函數(shù)調用結束,我的地址依然可以使用\n",str4);
str5=fun2();
printf("str5:%s,fun函數(shù)調用結束,函數(shù)結束不會自動釋放\n",str5);
free(str5);
return 0;
}
char *fun0(char s[])
{
static char str3[]="我是fun函數(shù)申明的靜態(tài)數(shù)組變量";
printf("str1:%s,fun函數(shù)可以直接調用\n",str1);
printf("str2:%s,fun函數(shù)通過參數(shù)將我的地址傳進來\n",s);
return str3;
}
char *fun1()
{
char *str4="我是fun1函數(shù)的字符串常量";
return str4;
}
char *fun2()
{
int len;
char sTemp[]="這是一個臨時數(shù)組,之后用于給mallc申請的地址傳值,傳遞內容為:(我是fun函數(shù)通過mallic申請的數(shù)組)";
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;
}
用指針就可以了,如
定義有int a[5];
則這樣定義函數(shù):
int fun(int *p, int size)
{
//p為數(shù)組的首地址
//size為數(shù)組的大小
//傳遞進去后可以像操作a一樣用下標操作p
//如p[0], p[4]...
}
傳遞參數(shù)給函數(shù)可以這樣寫:
fun(a, 5);
若是多維數(shù)組,則第一維大小不給出,只指定后面的維數(shù)大小,如:
定義有int a[5][2];
則這樣定義函數(shù):
int fun(int p[][2], int size)
{
//p為數(shù)組的首地址
//size為第一維的大小
//傳遞進去后可以像操作a一樣用下標操作p
//如p[0][1], p[4][1]...
}
傳遞參數(shù)給函數(shù)可以這樣寫:
fun(a, 5);
#include stdio.h
#includestdlib.h
struct s
{int a[2];
struct s *next;
}; //定義了一個結構體
main()
{ int i=0;
struct s *head,*p;
head=p=(struct s *)malloc(sizeof(struct s));//開辟一個新單元
for(i=0;i2;i++) //定i2,(如果你想要100個數(shù)組,i 就等于100)類似于你定義了2個一維數(shù)組
{
scanf("%d",p-a);
p=p-next=(struct s *)malloc(sizeof(struct s));
}
p=head;//使p指針指向第一個數(shù)組
printf("%d\n",p-a[0]);//如果你想看第二個數(shù)組里的a[0]的數(shù)值改成(p-a[0])+1。
}
#include?stdio.h
void?input(int?a[],int?n){
int?i;
for?(i=0;in;i++)?scanf("%d",a[i]);
}
void?print(int?a[],int?n){
int?i;
for?(i=0;in;i++)?printf("%d\t",a[i]);
}
void?main(){
int?a[50];
input(a,50);
print(a,50);
}