❶ 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語言中怎麼將數組直接作為函數的參數 比如 int f(int a[10]) 在調用函數時會顯示
要把數組作為函數的參數,在函數定義的時候,就要在參數列表設置指針,因為數組名就是數組的頭指針,在調用時直接把數組名作為函數的參數就好了
比如
int fun(int *a)
{
//...
}
int main()
{
int a[10];
int result=fun(a);
return 0;
}
這樣就好了
通常為了在函數中確保訪問數組不越界,在參數列表還要假如數組的長度,方便函數訪問數組
如下:
int fun(int *a,int length)
{
int i,sum=0;
for(i=0;i<length;i++)
{
//...對數組的每個元素進行訪問
sum+=a[i];//把全部元素加起來
}
return sum;
}
int main()
{
int i,a[10];
for(i=0;i<10;i++)
scanf("%d",&a[i]);
int result=fun(a,10);
printf("總和為:%d\n",result);
return 0;
}
❸ c語言中數組作為函數參數的問題。
E
數組作為參數不需要標示大小
A
數組參數在函數中要被隱式轉換為一個常量指針在使用
F
定義數組值為int
a[i]
這里的i應該是一個編譯時期決定大小常量表達式。
❹ C語言數組作為參數
int Arrage(int iArrage[10])這個函數的參數是iArrage,這是一個int型指針,所以要傳一個int型指針進去,液姿凳比如main函數中的iStudent就是個鬧旅int型指針冊檔
❺ C語言中如何將二維數組作為函數的參數傳遞
在c語言中可以用二維數組作為實參或者形參。
1、函數中用二維數組作為形參,函數聲明中可以指定所有維數的大小,也可以省略第1維的維數如:
void f(int array[3][10]); //正確
void f(int array[][10]); //正確上面的兩種二維數組形參表示都是正確的。
2、函數中用二維數組作為形參,不能把第2維或者更高維的大小省略,如下面的定義是不合法的:
void f(int array[][]); //錯誤
因為從實參傳遞來的是數組的起始地址,在內存中按數組排列規則存放(按行存放),而並不區分行和列,如果在形參中不說明列數,則系統無法決定應為多少行多少列,不能只指定一維而不指定第二維,下面寫法是錯誤的:
void f(int array[3][]); //錯誤 3、二維數組作為實參傳遞時,必須保證實參第2維的維數與形參第2維的維數相同,因為必須要保證形參和實參的數據類型一致。比如定義如下函數:
void f(int array[][10]);可以將如下數組傳遞給函數f。
int a[2][10] = {1,2,3,4};
int b[4][10] = {1};
❻ 在C語言中,數組作為參數,是怎樣在函數之間傳遞的啊
數組作為參數是按地址傳遞的
數組名就是數組的首地址。因此在數組名作函數參數時所進行的傳送只是地址的傳送, 也就是說把實參數組的首地址賦予形參數組名。形參數組名取得該首地址之後,也就等於有了實在的數組。實際上是形參數組和實參數組為同一數組,共同擁有一段內存空間。
❼ c語言 數組作為參數傳入函數,在函數處理完成之前,數組內容在函數外部被清空,函數處理是否會受到影響。
數組名就是一個指針常量,傳入函數的實際上是內存空間的首地址,在多進程(或多亮改線程)運行環境並且共同操作同一塊內存空間的情況下,會出現題目叢基所說的滲鍵謹情況,答案是肯定的,會受影響。
❽ C語言中數組作為函數參數
C中數組名代表該數組的首地址,
char
s[]="abc";
s代表的就是『a』在內存中的地址
以地址作參數
,實參和形參同時改變
❾ C語言中,數組作為參數,怎樣在函數之間傳遞的
很簡單的,數組作為函數參數傳遞的時候只要是數組名就可以了,因為數組名本身就是數組的首地址 .給個程序看看
#include<stdio.h>
#define N 3
int array[N][N];
void main()
{
//在主函數內聲明被調函數
void convert(int array[][3]);
int i,j;
printf("輸入數組:\n");
for(j=0;j<N;j++)
for(i=0;i<N;i++)
scanf("%d",&array[i][j]);
printf("\n");
for(j=0;j<N;j++)
{
for(i=0;i<N;i++)
printf("%d\t",array[i][j]);
printf("\n");
}
//調用矩陣轉置函數
convert(array);
printf("\n");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%d\t",array[i][j]);
printf("\n");
}
}
void convert(int array[][3])
{
int i,j,t;
for(i=0;i<N;i++)
for(j=0;j<N;j++)//設置數組中轉置矩陣元素交換
{
t=array[i][j];
array[i][j]=array[j][i];
array[j][i]=t;
}
}
❿ c語言中怎麼用二維數組作為函數參數
二維數組作為函數參數,實參可以直接使用二維數組名,在被調用函數中對形參數組定義可以指定所有維數的大小,也可以省略第一維的大小說明,如:
因為從實參傳遞來的是數組的起始地址,如果在形參中不說明列數,編譯器將無法定位元素的的位置。