① 關於c語言中一維數組做函數的參數
是對的啊:
typedefunsignedcharuchar;
ucharA[12];
ucharB[12];
ucharC[12];
voidtest(ucharTEMP[12])//這是處理數組的函數
{
ucharCOUNT;
for(COUNT=0;COUNT<12;COUNT++)
{
TEMP[COUNT]=1;//這里簡單點寫,就寫把數組都填滿1了
}
}
voidmain()//主函數
{
test(A);//將數組A填滿1
test(B);//將數組B填滿1
test(C);//將數組C填滿1
printf("ABC ");
for(inti=0;i<12;i++)
{
printf("%d%d%d ",A[i],B[i],C[i]);
}
}
結果:
② C語言中一維數組作為函數參數傳遞的問題!!!!!
參數3中傳遞方式.
值傳遞,址傳遞, 引用傳遞.
後兩者 才是對傳入的參數的實際操作.
第一個是 操作的 傳入參數的拷貝副本.
③ C語言數組做形參定義語法
a如果是函數是可以的,x[]表示數組x的地址,int x[]等價於int *x
④ C語言編程題,若函數形參為一維數組作函數參數編寫函數,統計某一維數組中非0元素的個數
#include <stdio.h>
int func(int a[],int n)
{
int i,cnt;
for(cnt=0,i=0;i<n;++i)
if(a[i])
cnt++;
return cnt;
}
int main()
{
int a[10]={0,1,2,3,4,5,6,7,8,9};
printf("%d ",func(a,10));
return 0;
}
⑤ 一維數組形參(C語言)
如果對全部元素都賦初值,則定義數組時對第一維的大小可以忽略,但第二維的大小不能省。例如:
int a[][4]=;
與下面的代碼是等價的:
int a[3][4]=;
編譯器會根據數據總個數分配空間,每行4列,所以確定該數組為3行。
⑥ 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語言 一維數組 實參與形參與指針的問題
實參是a,它可以作為指針名使用,等同於指向首元a[0]的指針。形參int a[]等價於int *a,它指向實參a數組的首元a[0]的地址。
⑧ c語言中一維數組作為實參時,對應它的形參怎麼寫c語言中二維數組作為實參時,對應它的又形參怎麼寫
一維可以直接寫成void fun(char a[]);
二維則需要寫出第二維的大小void fun(char a[][5]);
在這2中聲明中,都可以寫完整的維數
void fun(char a[3]);
void fun(char a[2][5]);
⑨ C語言關於一維數組做實參的問題
參數的兩種形式:
1、傳值:形參只是實參的一個副本,它只存在被調函數中,在被調函數中對形參的改變不會影響實參的值。
2、傳址:形參是實參的一個地址,在被調函數中對形參的改變會影響實參的值。
在c語言中,簡單變數默認是傳值,而數組默認是傳址。
所以出現你所說的一系列怪現象。
好好想一下,若還不明白請留言。
⑩ c語言 數組作為函數參數怎樣寫
囧...
你的數組定義的size是N+1,參數傳進去的size是N。
參數調用方法沒錯,細心,細心啊,老兄...