方法
創(chuàng)新互聯主營文安網站建設的網絡公司,主營網站建設方案,重慶App定制開發(fā),文安h5微信小程序定制開發(fā)搭建,文安網站營銷推廣歡迎文安等地區(qū)企業(yè)咨詢
有2
將該數組定義為全局變量,即:
int
g_arr;
void
fun()
{...}
void
main()
{...}
2.將該數組作為函數參數傳遞到自定義函數里,即:
void
fun(int
arr[])
{...}
void
main()
{
int
arr[10];
fun(arr);
}
給你看一下我的代碼
#includestdio.h
void main(){
int a[10],b[10],i,j,temp;
for(i=0;i10;i++){
printf("請輸入第%d個數:",(i+1));
scanf("%d",a[i]);
//保存數組,因為輸入完數組要冒泡排序,排序后的元素順序可能和原數組不一樣
b[i]=a[i];
}
//冒泡排序,求最大值
for(i=0;i9;i++){
for(j=0;j9-i;j++){
if(a[j]a[j+1]){ //這里控制的升序還是降序,我這是降序
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
//查找最大值在原數組的位置
for(i=0;i10;i++){
if(b[i]==a[0]){ //降序的話最大值是a[0],升序的話最大值是a[9]
break; //一旦找到最大值,馬上跳出循環(huán)
}
}
printf("最大值是%d,它在原數組中是第%d個元素!\n",a[0],(i+1));
}
看來你是還沒有理解數組的概念,數組名實際上就是指向該數組第一個元素的指針,比如說:
int
array[3]={1,2,3}的一個數組,這里的array實際上是一個指針,指向了這個數組的第一個元素。這時候你的*array
=
1,*(array
+
1)
=2,*(array
+
2)
=
3。
這時候你應該知道,所謂的返回數組和返回指針實際上是一個概念。
int
*
retInt()
{
int
array[3]={1,2,3};
return
array;
}
實際上就是返回了一個數組。你的最后一個問題,指定數組類型,實際上只要指定指針類型就可以了。
還有一種方法就是樓上的兄弟說的了,定義一個新的數據類型存放數組,函數返回該數據類型也就相當于返回了一個數組。
(上面的函數中數組有作用域問題,僅做說明使用。)
#include
"stdio.h"
void
input(int
a[10])
//給一維數組輸入數據
{
int
i;
for(i=0;i10;i++)
scanf("%d",a[i]);
}
void
output(int
a[10])
//輸出一維數組輸入數據
{
int
i;
for(i=0;i10;i++)
printf("%d
",a[i]);
}
int
main()
{
int
b[10];
input(b);
//調用input函數給數組b賦值
output(b);//調用output函數輸出數組b中的值
}