看來你是還沒有理解數(shù)組的概念,數(shù)組名實際上就是指向該數(shù)組第一個元素的指針,比如說:
成都創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務領域包括:成都網(wǎng)站建設、網(wǎng)站建設、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務,滿足客戶于互聯(lián)網(wǎng)時代的鐵東網(wǎng)站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡建設合作伙伴!
int
array[3]={1,2,3}的一個數(shù)組,這里的array實際上是一個指針,指向了這個數(shù)組的第一個元素。這時候你的*array
=
1,*(array
+
1)
=2,*(array
+
2)
=
3。
這時候你應該知道,所謂的返回數(shù)組和返回指針實際上是一個概念。
int
*
retInt()
{
int
array[3]={1,2,3};
return
array;
}
實際上就是返回了一個數(shù)組。你的最后一個問題,指定數(shù)組類型,實際上只要指定指針類型就可以了。
還有一種方法就是樓上的兄弟說的了,定義一個新的數(shù)據(jù)類型存放數(shù)組,函數(shù)返回該數(shù)據(jù)類型也就相當于返回了一個數(shù)組。
(上面的函數(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ù)指針”本身首先應是指針變量,只不過該指針變量指向函數(shù)。這正如用指針變量可指向整型變量、字符型、數(shù)組一樣,這里是指向函數(shù)。C在編譯時,每一個函數(shù)都有一個入口地址,該入口地址就是函數(shù)指針所指向的地址。有了指向函數(shù)的指針變量后,可用該指針變量調用函數(shù),就如同用指針變量可引用其他類型變量一樣,在這些概念上是大體一致的。函數(shù)指針有兩個用途:調用函數(shù)和做函數(shù)的參數(shù)。3.函數(shù)指針的聲明方法為:返回值類型( * 指針變量名) (形參列表);“返回值類型”說明函數(shù)的返回類型,“( * 指針變量名)”中的括號不能省,括號改變了運算符的優(yōu)先級。若省略整體則成為一個函數(shù)說明,說明了一個返回的數(shù)據(jù)類型是指針的函數(shù),后面的“形參列表”表示指針變量指向的函數(shù)所帶的參數(shù)列表。例如:int func(int x); /* 聲明一個函數(shù) */int (*f) (int x); /* 聲明一個函數(shù)指針 */f = func; /* 將func函數(shù)的首地址賦給指針f */或者使用下面的方法將函數(shù)地址賦給函數(shù)指針:f = func;賦值時函數(shù)func不帶括號,也不帶參數(shù),由于func代表函數(shù)的首地址,因此經過賦值以后,指針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;}
#define _CRT_SECURE_NO_DEPRECATE
#includestdio.h
#includemalloc.h
#includetime.h
#includestdlib.h
int findarray(int*p,int len,int val);
int main(void)
{
int len; //數(shù)組中元素個數(shù)
int i=0; //數(shù)組元素下標
int val; //要搜索的數(shù)
printf("請為一個隨機數(shù)數(shù)組設定元素個數(shù)len=");
scanf("%d", len);
int*p = (int*)malloc(sizeof(int)*(len+1));
for (i = 0; i len;++i)
{
p[i]=rand()%101; //0到100的隨機數(shù)
}
printf("已為你生成隨機數(shù)組為:\n");
for (i = 0; i len; ++i)
{
printf("%d ", p[i]);
}
printf("\n");
printf("請輸入你要搜索的數(shù)val=");
scanf("%d", val);
if (findarray(p, len, val) == len)
printf("數(shù)組中無此元素");
else
printf("數(shù)組中有這個元素,在第%d個位置", findarray(p, len, val) + 1);
getchar();
getchar();
return 0;
}
int findarray(int*p, int len,int val)
{
p[len] = val;
for (int i = 0; p[i] != val; ++i)
{
if (p[i] == val)
return i;
}
}
array的英文意思是數(shù)組,C語言有數(shù)組,但沒有VB里面的函數(shù)array(它是用來給數(shù)組賦值的)