如果你非要用指針的話,可以把數(shù)組的形式改寫成指針的形式,就像一樓的
目前創(chuàng)新互聯(lián)公司已為數(shù)千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、網(wǎng)站改版維護(hù)、企業(yè)網(wǎng)站設(shè)計、龍山網(wǎng)站維護(hù)等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
void Chg_Array(int array[], int size, int value)
{
int i;
for(i=0;isize;i++)
*(array+i)=value ;
}
#includestdio.h
#includestdlib.h
int assignment(int *,int);
void print(int *,int);
void main()
{
int sz,rt;
int *p; //定義一個指針,在子函數(shù)里再動態(tài)分配內(nèi)存
printf("輸入data的數(shù)據(jù)元素個數(shù):");
scanf("%d",sz);
rt=assignment(p,sz); //調(diào)用賦值函數(shù)
printf("數(shù)組最后元素為:%d\n",rt);
}
int assignment(int data[],int size) //按 Fibonacci 數(shù)列對數(shù)組元素依次賦值
{
int res;
data=(int *)malloc(size*sizeof(int));
if(size==1)
data[0]=1;
else if(size==2)
{
data[0]=1;
data[1]=1;
}
else
{
data[0]=1;
data[1]=1;
for(int i=2;isize;i++)
data[i]=data[i-1]+data[i-2];
}
print(data,size); //調(diào)用打印函數(shù)
res=data[size-1]; //最后一個元素是data[size-1]
free(data); //釋放內(nèi)存
return res;
}
void print(int data[],int size) //打印數(shù)組
{
for(int i=0;isize;i++)
printf("%d ",data[i]);
}
有注釋的,不明白的再討論
#include
stdio.h
f(int
a,int
b,int
m){
//這個函數(shù)是個完全沒意思的函數(shù)
m=a*b;
return
;
//原因在這
這里直接return了
沒指明返回哪個變量
那它的意義就只是說f函數(shù)結(jié)束了
其實什么也沒返回
}
void
main(){
int
m=1;
//這里對m賦值1
f(2,3,m);
//運算是完全沒意思的運算
所以最后結(jié)果是1
printf("%d",m);
}
為什么運行結(jié)果是m=1?????
//
在f函數(shù)那
return
m
就能得到你想要的
不過要把主函數(shù)里的倒數(shù)3行改成
m=f(2,3,m)
n = scanf("%d",n);
這一句有問題
1. scanf 函數(shù)是有返回值的,它的返回值可以分成三種情況
1) 正整數(shù),表示正確輸入?yún)?shù)的個數(shù)。
例如執(zhí)行 scanf(“%d %d”, a, b);
如果用戶輸入”3 4”,可以正確輸入,返回2(正確輸入了兩個變量);
如果用戶輸入”3,4”,可以正確輸入a,無法輸入b,返回1(正確輸入了一個變量)。
2) 0,表示用戶的輸入不匹配,無法正確輸入任何值。如上例,用戶如果輸入”,3 4”,返回0。
3) EOF,這是在 stdio.h 里面定義的常量(通常值為-1),表示輸入流已經(jīng)結(jié)束。在Windows下,用戶按下CTRL+Z(會看到一個^Z字符)再按下回車(可能需要重復(fù)2次),就表示輸入結(jié)束;Linux/Unix下使用CTRL+D表示輸入結(jié)束。
你這個輸入一個返回值就是1,因此n也會一直等于一
void bar(int p) 是拷貝傳遞,函數(shù)內(nèi)部的p與外面?zhèn)魅氲膉只是值相同,并不是同一個內(nèi)存空間,你在函數(shù)內(nèi)部賦值其實一點作用都沒有。
void fun(int *p) 傳遞的是指針,你也可以連接是拷貝傳遞,但傳遞的是指針,所以在里面對*p操作就是于直接對傳入的j的內(nèi)存空間進(jìn)行操作。
C++中可以改成 void bar(int p) 其他不用改,引用傳遞,這樣就可以修改外面?zhèn)魅氲臄?shù)據(jù)了。
你的子函數(shù)沒有return ?。?!如果你是想調(diào)用子函數(shù)的話可以直接寫成chooseinterface(s);
這樣就可以輸出顯示結(jié)果了!!而不是你寫的那樣用返回值顯示!!
到現(xiàn)在我還沒看明白你寫的那是什么意思!!
a=chooseinterface(s);
printf("ABC\n",a);
看來是基礎(chǔ)不扎實,多看看函數(shù)那一章?。?!
c編程高手團(tuán)隊正在招新,有意者速速行動,一起學(xué)習(xí),一起努力??!