看來你是還沒有理解數(shù)組的概念,數(shù)組名實(shí)際上就是指向該數(shù)組第一個(gè)元素的指針,比如說:
成都創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的江陰網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
int
array[3]={1,2,3}的一個(gè)數(shù)組,這里的array實(shí)際上是一個(gè)指針,指向了這個(gè)數(shù)組的第一個(gè)元素。這時(shí)候你的*array
=
1,*(array
+
1)
=2,*(array
+
2)
=
3。
這時(shí)候你應(yīng)該知道,所謂的返回?cái)?shù)組和返回指針實(shí)際上是一個(gè)概念。
int
*
retInt()
{
int
array[3]={1,2,3};
return
array;
}
實(shí)際上就是返回了一個(gè)數(shù)組。你的最后一個(gè)問題,指定數(shù)組類型,實(shí)際上只要指定指針類型就可以了。
還有一種方法就是樓上的兄弟說的了,定義一個(gè)新的數(shù)據(jù)類型存放數(shù)組,函數(shù)返回該數(shù)據(jù)類型也就相當(dāng)于返回了一個(gè)數(shù)組。
(上面的函數(shù)中數(shù)組有作用域問題,僅做說明使用。)
array的英文意思是數(shù)組,C語(yǔ)言有數(shù)組,但沒有VB里面的函數(shù)array(它是用來給數(shù)組賦值的)
一、數(shù)組可定義為全局變量,函數(shù)直接調(diào)用。
二、數(shù)組可定義為局部變量,再通過參數(shù)傳遞到函數(shù)中調(diào)用(實(shí)參傳數(shù)組名,表示數(shù)組首地址,也可通過指針或數(shù)組名+數(shù)字來傳遞數(shù)組局部地址)。
三、main函數(shù)想要調(diào)用函數(shù)返回的數(shù)組,可用static定義靜態(tài)變量或malloc定義動(dòng)態(tài)數(shù)組(字符串常量也可返回使用,但局部變量,在函數(shù)調(diào)用結(jié)束會(huì)被釋放,不能作為返回地址使用)。
下面是演示代碼:
#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ù)調(diào)用結(jié)束,我的地址依然可以使用\n",str3);
str4=fun1();
printf("str4:%s,fun函數(shù)調(diào)用結(jié)束,我的地址依然可以使用\n",str4);
str5=fun2();
printf("str5:%s,fun函數(shù)調(diào)用結(jié)束,函數(shù)結(jié)束不會(huì)自動(dòng)釋放\n",str5);
free(str5);
return 0;
}
char *fun0(char s[])
{
static char str3[]="我是fun函數(shù)申明的靜態(tài)數(shù)組變量";
printf("str1:%s,fun函數(shù)可以直接調(diào)用\n",str1);
printf("str2:%s,fun函數(shù)通過參數(shù)將我的地址傳進(jìn)來\n",s);
return str3;
}
char *fun1()
{
char *str4="我是fun1函數(shù)的字符串常量";
return str4;
}
char *fun2()
{
int len;
char sTemp[]="這是一個(gè)臨時(shí)數(shù)組,之后用于給mallc申請(qǐng)的地址傳值,傳遞內(nèi)容為:(我是fun函數(shù)通過mallic申請(qǐng)的數(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;
}
函數(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í),每一個(gè)函數(shù)都有一個(gè)入口地址,該入口地址就是函數(shù)指針?biāo)赶虻牡刂贰S辛酥赶蚝瘮?shù)的指針變量后,可用該指針變量調(diào)用函數(shù),就如同用指針變量可引用其他類型變量一樣,在這些概念上是大體一致的。函數(shù)指針有兩個(gè)用途:調(diào)用函數(shù)和做函數(shù)的參數(shù)。3.函數(shù)指針的聲明方法為:返回值類型( * 指針變量名) (形參列表);“返回值類型”說明函數(shù)的返回類型,“( * 指針變量名)”中的括號(hào)不能省,括號(hào)改變了運(yùn)算符的優(yōu)先級(jí)。若省略整體則成為一個(gè)函數(shù)說明,說明了一個(gè)返回的數(shù)據(jù)類型是指針的函數(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)過賦值以后,指針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;}
方法
有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);
}
當(dāng)前文章:C語(yǔ)言有數(shù)組函數(shù)嗎,C語(yǔ)言數(shù)組函數(shù)
分享URL:http://chinadenli.net/article48/heschp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)、品牌網(wǎng)站設(shè)計(jì)、建站公司、品牌網(wǎng)站建設(shè)、微信公眾號(hào)、App設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)