c語言函數形參是數組
㈠ c語言數組變數作為函數參數
將數組傳遞給函數後,數組就會退化為指針
voidfun(intx,intpp[],int*n)
voidfun(intx,int*pp,int*n)
//這兩種寫法是等價的
pp[j++]=j;//這句寫錯了回
//要保存到答pp里的是能整除的整數,而不是計數器j,如果這么寫,那麼pp的值肯定是{0,1,2,3,4,5,...}
//應該改成
pp[j++]=l;//L才是被整除的整數,要保存的是這個
*n=j;//n作為一個指針,負責傳出得到的數字的數量,j是計數器,當所有的計算完畢後,j的值自然是這些數字的數量
㈡ c語言中數組作為函數參數的問題。
E
數組作為參數不需要標示大小
A
數組參數在函數中要被隱式轉換為一個常量指針在使用
F
定義數組值為int
a[i]
這里的i應該是一個編譯時期決定大小常量表達式。
㈢ C語言中函數定義形參為數組時的問題
1.數組為參數傳遞的是數組首地址,而不是元素的值,而你說的a[size]僅僅是值,況且版事實上也沒有a[size]這個元素權
2.既然是數組名的傳遞,當然需要由一個數組的參數來接收,int v[]」的問題是因為他是形式參數,是為了接收數組的
n的問題是因為,如果只傳遞了數組,但是函數並找不到數組的個數,所以需要把數組大小傳遞過來
㈣ 關於c語言中數組作為函數參數的函數之間調用問題
1、新建一個數組作為參數項目,如圖所示:
㈤ C語言中數組作為函數參數
C中數組名代表該數組的首地址,
char
s[]="abc";
s代表的就是『a』在內存中的地址
以地址作參數
,實參和形參同時改變
㈥ c語言 數組作為函數參數怎樣寫
如果一個函數的目的是要產生一個新的數組,那麼最好的做法是在調用函數前就內生成好這個數組,然後把這容個數組作為參數傳給函數,在函數中修改這個數組的值.
像你這種做法,在sum函數結束後,sth3數組就作為局部變數被釋放了.而且在main中,sum數組聲明以後,sum就是一個常量了,又怎麼能放在=左邊呢.
另外,sum函數的演算法也錯了.
正確代碼如下:
void Sum(int sth1[][3],int sth2[][3],int sth3[][3])
{
int i = 0;
int j =0;
do
{
sth3[i][j]=sth1[i][j]+sth2[i][j];
j++;
if(j==3)
}while(i<3);
}
int main(void)
{
int matrix1[3][3]={
,
,
};
int matrix2[3][3]={
,
,
,
};
int sum[3][3];
Sum(matrix1,matrix2,sum);
Display(sum);
return 0;
}
如果還沒解決你的問題,可以加我網路HI賬號。
㈦ c語言 函數調用(形參為數組名的情況)
#include <stdio.h>
void sort(int a[20])
{ int i,j,k,t;
for(i=0;i<19;i++)
{ k=i;
for(j=i+1;j<20;j++)
if(a[k]>a[j]) k=j;
t=a[k];a[k]=a[i];a[i]=t;
}
}
void main()
{ int a[20]={2,5,7,8,4,10,48,96,65,74,35,84,15,38,52,56,60,20,17,80};
sort(a);
}
沒問題
我調試過了
記得給我加分
㈧ c語言中數組名作為函數參數
要將數組長度作為一個參數傳給average函數,不能在average函數內部通過int arrLen = sizeof(a) / 4;來計算數組長度。因為float average(float a[10])就相當於float average(float *a) ,所以sizeof(a)恆等於4,sizeof(a) / 4恆等於1。
應該這樣:
float average(float a[10],int arrLen) {
float sumSco = 0;
for (int i = 0; i < arrLen; i++)
{
sumSco += a[i];
}
return sumSco / arrLen;
}
㈨ 關於C語言數組作為函數的實參和形參的問題
函數傳遞數組的話,其實傳遞收地地址就好,把數組首地址傳給函數的形參(這個形參務必定義為對應類型的指針),形參可以以指針的形式訪問數組的內容,也可以直接用數組的方式訪問