重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
#includestdio.h
創(chuàng)新互聯(lián)建站服務(wù)項(xiàng)目包括灌陽(yáng)網(wǎng)站建設(shè)、灌陽(yáng)網(wǎng)站制作、灌陽(yáng)網(wǎng)頁(yè)制作以及灌陽(yáng)網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,灌陽(yáng)網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到灌陽(yáng)省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
#includestdlib.h
int assignment(int *,int);
void print(int *,int);
void main()
{
int sz,rt;
int *p; //定義一個(gè)指針,在子函數(shù)里再動(dòng)態(tài)分配內(nèi)存
printf("輸入data的數(shù)據(jù)元素個(gè)數(shù):");
scanf("%d",sz);
rt=assignment(p,sz); //調(diào)用賦值函數(shù)
printf("數(shù)組最后元素為:%d\n",rt);
}
int assignment(int data[],int size) //按 Fibonacci 數(shù)列對(duì)數(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]; //最后一個(gè)元素是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]);
}
有注釋的,不明白的再討論
n = scanf("%d",n);
這一句有問(wèn)題
1. scanf 函數(shù)是有返回值的,它的返回值可以分成三種情況
1) 正整數(shù),表示正確輸入?yún)?shù)的個(gè)數(shù)。
例如執(zhí)行 scanf(“%d %d”, a, b);
如果用戶輸入”3 4”,可以正確輸入,返回2(正確輸入了兩個(gè)變量);
如果用戶輸入”3,4”,可以正確輸入a,無(wú)法輸入b,返回1(正確輸入了一個(gè)變量)。
2) 0,表示用戶的輸入不匹配,無(wú)法正確輸入任何值。如上例,用戶如果輸入”,3 4”,返回0。
3) EOF,這是在 stdio.h 里面定義的常量(通常值為-1),表示輸入流已經(jīng)結(jié)束。在Windows下,用戶按下CTRL+Z(會(huì)看到一個(gè)^Z字符)再按下回車(可能需要重復(fù)2次),就表示輸入結(jié)束;Linux/Unix下使用CTRL+D表示輸入結(jié)束。
你這個(gè)輸入一個(gè)返回值就是1,因此n也會(huì)一直等于一
就是你在函數(shù)中定義了一個(gè)變量a(b,c或其他字母叫什么都行,就是一個(gè)符號(hào)) 然后 a=5,就是說(shuō)a的值就變成5了,你就把“=” 右邊的值賦給了a,也可以是
b=a,那么b就等于5了,因?yàn)閍現(xiàn)在的值就是5,把a(bǔ)賦給b。 如果繼續(xù)a=10,那么a得知就變?yōu)?0了現(xiàn)在,大致就是這個(gè)意思。
就是給一個(gè)變量或常量給一個(gè)值,比如int
a=1,就是把1賦給a,而并不代表通常意義的a等于1,如果要判斷a是否等于一是利用a==1來(lái)實(shí)現(xiàn)
C語(yǔ)言中的結(jié)構(gòu)體變量可以用另一個(gè)變量對(duì)其進(jìn)行賦值或初始化。
簡(jiǎn)單結(jié)構(gòu)體(不包含指針成員)直接賦值沒(méi)有問(wèn)題。但是稍微復(fù)雜一點(diǎn)的結(jié)構(gòu)體里面會(huì)有指針成員,那么以上的淺拷貝則會(huì)有問(wèn)題。
賦值會(huì)直接將結(jié)構(gòu)體的指針變量被賦值,賦值之前其所指向的內(nèi)存單元丟失,賦值之后若該指針指向的內(nèi)存單元被其它指針釋放掉,那么繼續(xù)使用該成員指針的話則有可能導(dǎo)致內(nèi)存泄漏。
概述:
在C語(yǔ)言中,結(jié)構(gòu)體(struct)指的是一種數(shù)據(jù)結(jié)構(gòu),是C語(yǔ)言中聚合數(shù)據(jù)類型(aggregate data type)的一類。結(jié)構(gòu)體可以被聲明為變量、指針或數(shù)組等,用以實(shí)現(xiàn)較復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。
結(jié)構(gòu)體同時(shí)也是一些元素的集合,這些元素稱為結(jié)構(gòu)體的成員(member),且這些成員可以為不同的類型,成員一般用名字訪問(wèn)。
C++提供了許多種基本的數(shù)據(jù)類型(如int、float、double、char等)供用戶使用。但是由于程序需要處理的問(wèn)題往往比較復(fù)雜,而且呈多樣化,已有的數(shù)據(jù)類型顯得不能滿足使用要求。
賦值語(yǔ)句是由賦值表達(dá)式再加上分號(hào)構(gòu)成的表達(dá)式語(yǔ)句。其一般形式為:變量=表達(dá)式;
賦值語(yǔ)句的功能和特點(diǎn)都與賦值表達(dá)式相同。 它是程序中使用最多的語(yǔ)句之一。
1 由于在賦值符“=”右邊的表達(dá)式也可以又是一個(gè)賦值表達(dá)式,
因此,下述形式
變量=(變量=表達(dá)式);
是成立的,從而形成嵌套的情形。
其展開(kāi)之后的一般形式為:
變量=變量=…=表達(dá)式;
例如:
a=b=c=d=e=5;
按照賦值運(yùn)算符的右接合性,因此實(shí)際上等效于:
e=5;
d=e;
c=d;
b=c;
a=b;
注意在變量說(shuō)明中給變量賦初值和賦值語(yǔ)句的區(qū)別。
給變量賦初值是變量說(shuō)明的一部分,賦初值后的變量與其后的其它同類變量之間仍必須用逗號(hào)間隔,而賦值語(yǔ)句則必須用分號(hào)結(jié)尾。例如:int a=5,b,c;
在變量說(shuō)明中,不允許連續(xù)給多個(gè)變量賦初值。
如下述說(shuō)明是錯(cuò)誤的:
int a=b=c=5
必須寫為
int a=5,b=5,c=5;
而賦值語(yǔ)句允許連續(xù)賦值。
注意賦值表達(dá)式和賦值語(yǔ)句的區(qū)別。
賦值表達(dá)式是一種表達(dá)式,它可以出現(xiàn)在任何允許表達(dá)式出現(xiàn)的地方,而賦值語(yǔ)句則不能。
下述語(yǔ)句是合法的:
if((x=y+5)0) z=x;
語(yǔ)句的功能是,若表達(dá)式x=y+5大于0則z=x。
下述語(yǔ)句是非法的:
if((x=y+5;)0) z=x;
因?yàn)閤=y+5;是語(yǔ)句,不能出現(xiàn)在表達(dá)式中