//代碼1
在東遼等地區(qū),都構建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供成都網(wǎng)站設計、網(wǎng)站建設 網(wǎng)站設計制作定制網(wǎng)站制作,公司網(wǎng)站建設,企業(yè)網(wǎng)站建設,高端網(wǎng)站設計,全網(wǎng)營銷推廣,成都外貿(mào)網(wǎng)站制作,東遼網(wǎng)站建設費用合理。
//要輸入多少個數(shù)據(jù):6
//1?2?3?4?5?6??????(連續(xù)輸入6個數(shù)據(jù))
//1?4?9?16?25?36???(結果)
#includestdio.h
#includestdlib.h?//用于調(diào)用函數(shù)malloc()
void?pr(int?p[],int?j);
int?main()
{
int?i,j;
int?*a;??//指向動態(tài)內(nèi)存
printf("要輸入多少個數(shù)據(jù):");
scanf("%d",j);
//創(chuàng)建動態(tài)內(nèi)存
a=(int?*)malloc(j?*?sizeof(int));
if(a?==?NULL)
{
printf("\n分配動態(tài)內(nèi)存時出錯.\n");
exit(1);
}
for(i=0;ij;i++)
{
scanf("%d",a[i]);
}
pr(a,j);
//原代碼for(int?i=0;ij;i++)
for(i=0;ij;i++)
{
//原代碼printf("%5d\n",a[i]);
printf("%d?",a[i]);
}
return?0;
}
void?pr(int?p[],int?j)
{
int?i;
for(i=0?;?ij?;?i++)
{
p[i]=p[i]*p[i];
}
}
//
//代碼2
#includestdio.h
#includestdlib.h?//用于調(diào)用函數(shù)malloc()
void?pr(int?p[],int?j);
int?main()
{
int?buf[]={1,2,3,4,5,6};
int?i,j;
int?*a;??//指向動態(tài)內(nèi)存
//計算數(shù)組buf的大小
j=sizeof(buf)/sizeof(int);
//創(chuàng)建動態(tài)內(nèi)存
a=(int?*)malloc(j?*?sizeof(int));
if(a?==?NULL)
{
printf("\n分配動態(tài)內(nèi)存時出錯.\n");
exit(1);
}
for(i=0;ij;i++)
{
a[i]=buf[i];
}
pr(a,j);
printf("原數(shù)組里的數(shù)據(jù):?");
for(i=0;ij;i++)
{
printf("%d?",buf[i]);
}
printf("\n");
printf("運算后的數(shù)據(jù):?");
for(i=0;ij;i++)
{
printf("%d?",a[i]);
}
return?0;
}
void?pr(int?p[],int?j)
{
int?i;
for(i=0?;?ij?;?i++)
{
p[i]=p[i]*p[i];
}
}
//
c語言可以用數(shù)組元素的方法或指針的方法調(diào)用數(shù)組。
int a[100],i;
for(i=0;i100;i++)
scanf("%d",a[i]);
for(i=0;i100;i++)
printf("%d ",a[i]);
也可以:
int a[100],*p;
for(p=a;pa+100;p++)
scanf("%d",p);
for(p=a;pa+100;p++)
printf("%d ",*p);
來傳送子函數(shù)中的數(shù)組有多種方法——可以通過函數(shù)返回值返回地址傳遞數(shù)組;也可以通過函數(shù)輸入?yún)?shù)來傳遞數(shù)組;還可以通過全局變量來傳遞數(shù)組。
子函數(shù)本身可以直接在作用域中進行調(diào)用。
1、通過函數(shù)返回值返回地址傳遞數(shù)組。
聲明函數(shù)時需要聲明函數(shù)返回值類型為對應數(shù)組的地址,此時可以返回數(shù)組的地址,結合數(shù)組元素的地址關系可以傳遞整個數(shù)組,同時可以根據(jù)數(shù)組的特性傳遞多個參數(shù)。
2、通過輸入?yún)?shù)傳遞數(shù)組。
聲明函數(shù)時提供空輸入?yún)?shù),調(diào)用函數(shù)時提供目標數(shù)組,即可以通過該數(shù)組調(diào)用子函數(shù)中的數(shù)組,該方法也可以用于傳遞多個參數(shù)。
3、通過全局變量來傳遞數(shù)組。
聲明全局變量用于存儲子函數(shù)中的數(shù)組,此時可以在全局變量作用域中讀取調(diào)用子函數(shù)的數(shù)組。
注意:子函數(shù)是C語言模塊化編程思想的核心,其方法是通過輸入接口和輸出接口實現(xiàn)對黑盒的調(diào)用,故對其內(nèi)部數(shù)據(jù)的輸入和調(diào)用也需要通過輸入接口、輸出接口和程序的公共區(qū)域實現(xiàn)。
調(diào)用時:
sum=fun1(a[N]);
printf("sum=%d\n",sum);
定義中:
int fun1(int a[N],int i)
{
int s=0;
for(i=0;iN;i++)
s=s+a[i];
return(s);
}
注意定義的函數(shù)int fun1(int a[N],int i),在調(diào)用函數(shù)的時候語法是sum=fun1(int a[N],int i);錯誤在于調(diào)用函數(shù)時()內(nèi)的參數(shù)應該和定義時一樣
因為main()函數(shù)中的function_a函數(shù)聲明和實際的情況不一樣,真實情況是該函數(shù)有三個參數(shù),而你卻將其聲明為沒有參數(shù),所以在調(diào)用時,傳入?yún)?shù)會有警告。
由于function_a的定義在main()之前,所以去掉主函數(shù)中的聲明即可,或者將聲明改為正確形式。
不能夠返回整個數(shù)組,只能返回數(shù)組中的某個值。如果數(shù)組在函數(shù)內(nèi)部定義,也不能直接返回數(shù)組名(臨時變量在函數(shù)結束時會釋放)。一般寫程序不會把數(shù)組作為返回值返回,想要返回整個數(shù)組,可以用指針來實現(xiàn)。