1、我們首先定義一個二級指針和一個行列變量[int ** array,row,column;]。
在望江等地區(qū),都構建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供網站建設、成都網站制作 網站設計制作按需定制,公司網站建設,企業(yè)網站建設,品牌網站設計,網絡營銷推廣,成都外貿網站建設公司,望江網站建設費用合理。
2、然后我們編寫進入行和列的語句,代碼如圖所示。
3、接下來我們可以用一維數組打開一維一維數組。
4、接下來,我們使用[array [i] =(int *)malloc(sizeof(int)* column);]來為數組再次生成包含該數組的新數組。
5、然后我們可以為它賦值并輸出[代碼如圖所示]。
6、運行程序后我們可以看到這種效果。
首先,C/C++只能返回數組的指針而不能返回整個數組。即使返回數組的指針,但如果函數中的數組是自動性質,那將是危險的。這是比較正宗的表述。如果確實需要從函數中返回自動性質的數組的全部元素值,有沒有辦法呢?有。由于C/C++是允許返回結構體的,可以定義一個結構體模板,把數組作為成員安排在其中,函數中臨時聲明結構體變量,操作其中的數組;完畢后返回結構體變量,在主調函數中用同類型的結構體變量接收就可間接實現“返回一個數組”。舉例代碼如下:
#include?"stdio.h"
struct?A{
int?m[30];//把數組m安排在結構體A中
};
struct?A?fun(int?n){
int?i,j,k;
struct?A?s;//在函數中聲明自動型結構體變量s
for(i=0;in;s.m[i++]=i+1);//為結構體成員數組m賦值1~15
for(j=n-1,i=0;ij;i++,j--)//倒序這個數組
k=s.m[i],s.m[i]=s.m[j],s.m[j]=k;
return?s;//返回結構體變量s
}
int?main(int?argc,char?*argv[]){
A?a;//主調函數中聲明同類型結構體變量a接收函數fun的返回值
int?i;
a=fun(15);//用15調用fun(不要大于30,只是舉例),將結果賦于a
for(i=0;i15;i++)//輸出看看是不是倒序了...
printf("%d?",a.m[i]);
printf("\n");
return?0;
}
運行結果如下:
#includestdio.h
main()
{
float change(float array[3][3]);
float a[3][3];
int i,j;
for (i=0;i3;i++)
for (j=0;j3;j++)
scanf("%d",a[i][j]);
change (a);
for (i=0;i3;i++)
for (j=0;j3;j++)
printf("%4d\n",a[i][j]);
}
float change(float array[3][3]) // 這里可以寫出 array[][3]
{
float c[3][3];
int m,n;
for(m=0;m3;m++)
for(n=0;n3;n++)
c[n][m]=array[m][n];
for(m=0;m3;m++)
for(n=0;n3;n++)
arry[m][n]=c[m][n]; //不想改變你的程序,所以在這里修改。這樣 arry在主函數中是可以訪問的。。。不用返回了。
}
以上回答你滿意么?
數組不用return,數組在函數中改變是改變的實參。
因為數組是地址。這樣做
/*
note:your
choice
is
c
ide
*/
#include
"stdio.h"
static
int
max[5];
void
main()
{
int
va[5][5];
int
peo;
int
sub;
for(peo=0;peo5;peo++)
{
sub=0;
printf("yingyu:");
scanf("%d",va[peo][sub]);
sub++;
printf("shuxue:");
scanf("%d",va[peo][sub]);
sub++;
printf("guoyu:");
scanf("%d",va[peo][sub]);
sub++;
printf("shehui:");
scanf("%d",va[peo][sub]);
sub++;
printf("li
ke:");
scanf("%d",va[peo][sub]);
}
max_of(va);
printf("yingyu:%d\n",max[0]);
printf("shuxue:%d\n",max[1]);
printf("guoyu:%d\n",max[2]);
printf("shehui%d\n",max[3]);
printf("like:%d\n",max[4]);
}
int
max_of(int
vb[5][5])
{
int
k,r;
for(k=0;k5;k++)
{
max[k]=vb[0][k];
for(r=0;r5;r++)
{
if(vb[r][k]max[k])
max[k]=vb[r][k];
}
}
}
應該這樣做,輸出每一門的最大值
不好意思,剛才錯了,我現在把正確的貼上去了
你的那個一位數組應設為全局變量放在程序開始,
然后是數組因為數組就是地址,所以他們不用返回,他們在那個函數中其實是改變的數組內部的值,不是形式參數,故c語言能讀出數組中的值
// 方法1,用靜態(tài)變量進行返回
char *SubFunction(void)
{
static char szText[5] = "adfa"; // 用靜態(tài)空間
//對p進行賦值操作
return szText;
}
void Caller() // 這個函數調用SubFunction
{
TRACE("%s\n", SubFunction);
}
// 方法2,用指針傳遞
void SubFunction(char *pText1, char *pText2)
{
// 對pText1, pText2運算
strcpy(pText1, "love");
strcpy(pText2, "you");
return;
}
void Caller() // 這個函數調用SubFunction
{
char szText1[5], szText2[5]; // 當然這里也可以動態(tài)分配內存
SubFunction(szText1, szText2); // szText1, szText2就是帶回的值
TRACE("%s %s\n", szText1, szText2);
}
只能返回一個數,數組不能返回,以數組為函數參數傳給形參時,由于是數組名傳遞(地址傳遞),實參和形參共用一段內存,對形參更改時實參的值也會改變,所以不需要返回值