新聞中心
c語言關(guān)于函數(shù)為參數(shù)賦值的問題
void bar(int p) 是拷貝傳遞,函數(shù)內(nèi)部的p與外面?zhèn)魅氲膉只是值相同,并不是同一個(gè)內(nèi)存空間,你在函數(shù)內(nèi)部賦值其實(shí)一點(diǎn)作用都沒有。
創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供景寧畬族自治網(wǎng)站建設(shè)、景寧畬族自治做網(wǎng)站、景寧畬族自治網(wǎng)站設(shè)計(jì)、景寧畬族自治網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、景寧畬族自治企業(yè)網(wǎng)站模板建站服務(wù),十余年景寧畬族自治做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
void fun(int *p) 傳遞的是指針,你也可以連接是拷貝傳遞,但傳遞的是指針,所以在里面對(duì)*p操作就是于直接對(duì)傳入的j的內(nèi)存空間進(jìn)行操作。
C++中可以改成 void bar(int p) 其他不用改,引用傳遞,這樣就可以修改外面?zhèn)魅氲臄?shù)據(jù)了。
C語言中輸入函數(shù)賦值?
n = scanf("%d",n);
這一句有問題
1. scanf 函數(shù)是有返回值的,它的返回值可以分成三種情況
1) 正整數(shù),表示正確輸入?yún)?shù)的個(gè)數(shù)。
例如執(zhí)行 scanf(“%d %d”, a, b);
如果用戶輸入”3 4”,可以正確輸入,返回2(正確輸入了兩個(gè)變量);
如果用戶輸入”3,4”,可以正確輸入a,無法輸入b,返回1(正確輸入了一個(gè)變量)。
2) 0,表示用戶的輸入不匹配,無法正確輸入任何值。如上例,用戶如果輸入”,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ì)一直等于一
@C語言大神:把整數(shù)賦值給某一類型的變量。程序應(yīng)該怎么寫?求解釋、一個(gè)例子就夠了
這個(gè)涉及類型轉(zhuǎn)換了,float—int類型,系統(tǒng)會(huì)截取float變量的整數(shù)部分賦給int變量。
同一句語句或表達(dá)式如果使用了多種類型的變量和常量(類型混用),C 會(huì)自動(dòng)把它們轉(zhuǎn)換成同一種類型。以下是自動(dòng)類型轉(zhuǎn)換的基本規(guī)則:
1. 在表達(dá)式中,char 和 short 類型的值,無論有符號(hào)還是無符號(hào),都會(huì)自動(dòng)轉(zhuǎn)換成 int 或者 unsigned int(如果 short 的大小和 int 一樣,unsigned short 的表示范圍就大于 int,在這種情況下,unsigned short 被轉(zhuǎn)換成 unsigned int)。因?yàn)樗鼈儽晦D(zhuǎn)換成表示范圍更大的類型,故而把這種轉(zhuǎn)換稱為“升級(jí)(promotion)”。
2. 按照從高到低的順序給各種數(shù)據(jù)類型分等級(jí),依次為:long double, double, float, unsigned long long, long long, unsigned long, long, unsigned int 和 int。這里有一個(gè)小小的例外,如果 long 和 int 大小相同,則 unsigned int 的等級(jí)應(yīng)位于 long 之上。char 和 short 并沒有出現(xiàn)于這個(gè)等級(jí)列表,是因?yàn)樗鼈儜?yīng)該已經(jīng)被升級(jí)成了 int 或者 unsigned int。
3. 在任何涉及兩種數(shù)據(jù)類型的操作中,它們之間等級(jí)較低的類型會(huì)被轉(zhuǎn)換成等級(jí)較高的類型。
4. 在賦值語句中,= 右邊的值在賦予 = 左邊的變量之前,首先要將右邊的值的數(shù)據(jù)類型轉(zhuǎn)換成左邊變量的類型。也就是說,左邊變量是什么數(shù)據(jù)類型,右邊的值就要轉(zhuǎn)換成什么數(shù)據(jù)類型的值。這個(gè)過程可能導(dǎo)致右邊的值的類型升級(jí),也可能導(dǎo)致其類型降級(jí)(demotion)。所謂“降級(jí)”,是指等級(jí)較高的類型被轉(zhuǎn)換成等級(jí)較低的類型。
5. 作為參數(shù)傳遞給函數(shù)時(shí),char 和 short 會(huì)被轉(zhuǎn)換成 int,float 會(huì)被轉(zhuǎn)換成 double。使用函數(shù)原型可以避免這種自動(dòng)升級(jí)。
希望能夠幫助到你,望采納!
c語言中可不可以直接在函數(shù)首部直接給參數(shù)賦值
不明白你的意思……是不是類似于這樣 int hello(char a,int i = 4,int m = 9){} ?
這樣在c語言中是不可以的,這是c++的概念,默認(rèn)參數(shù),使用方法如下:以上面的hello函數(shù)為例
hello(n); 默認(rèn)i=4,m=9。 hello(n,5,23); 這里在函數(shù)中i = 5,m = 23.
就是說,如果調(diào)用時(shí)給參數(shù)賦值了,就使用賦值的,如果沒有,就使用默認(rèn)的
需要標(biāo)明一點(diǎn),這種函數(shù)參數(shù)表有個(gè)規(guī)則,就是所有的默認(rèn)參數(shù)都靠后,即:int hello(int a = 1,int b,int c=23){} 是錯(cuò)誤的……而且,使用時(shí),也不可以跳過一個(gè)默認(rèn)值給后面的值賦值,如:
int hello(char a,int b= 12,char c = 'd')如果想?yún)?shù)b使用默認(rèn)而給c賦值,那么必須是hello(a,12,c),如果跳過賦值b,即:hello(a,c);就是錯(cuò)的,很好理解,這樣就把c賦值給參數(shù)b了,一定報(bào)錯(cuò)。
標(biāo)題名稱:c語言給函數(shù)整型參數(shù)賦值 c語言整型數(shù)組賦值
標(biāo)題URL:http://www.ef60e0e.cn/article/hhdgde.html