1樓:網友
for(int i=0;ifor(int j=0;ifor(int i=0;ifor(int j=0;i從縮排就可以看出,前者a, b在內迴圈,後者a在內,b在外。
2樓:匿名使用者
有問題啊,判斷條件都是「i如果改成:for(int i=0;i與for(int i=0;i那麼:..如果是指兩個語句,這兩段**完全不一樣,例如:
for(int i=0;ifor(int j=0;ii++;j++;
與。for(int i=0;ii++;j++;
明顯兩段中「for(j = 0 ..作用域不同了。
還有,也許這是您想問的:
我來答:for(i = 0; i < n; i++)for(j = 0; j < n; j++)i++;j++;
與。for(i = 0; i < n; i++)for(j = 0; j < n; j++)i++;j++;
是一樣的。但最好還是寫下面的樣子,易讀。
c語言中 變數作用域的區別
3樓:匿名使用者
作用域和生存週期是完全不同的兩個概念。作用域可以看作是變數的乙個有效範圍,就像網遊中的攻擊範圍一樣;生存週期可以看成是乙個變數能存在多久,能在那些時段存在,就像網遊中的魔法持續時間……
簡單的以乙個區域性變數來舉個例子:
在main函式中宣告瞭變數a,那麼a的作用域就是main函式內部,脫離了main函式,a就無法使用了,main函式之外的函式或者方法,都無法去使用a。那麼a的生存週期是指a在那些時候存在,具體到這個例子,a什麼時候存在,要取決於main函式,或者說,main函式只要被呼叫,且呼叫沒有完成,那麼a就將存在。除此以外的情況,a都將被釋放。
生存週期也可以理解為從宣告到釋放的之間的時間。
變數具體可以分為全域性變數、靜態全域性變數、靜態區域性變數和區域性變數。
按儲存區域分:全域性變數、靜態全域性變數和靜態區域性變數都存放在記憶體的全域性資料區,區域性變數存放在記憶體的棧區。
按作用域分:全域性變數在整個工程檔案內都有效;靜態全域性變數只在定義它的檔案內有效;靜態區域性變數只在定義它的函式內有效,只是程式僅分配一次記憶體,函式返回後,該變數不會消失;區域性變數在定義它的函式內有效,但是函式返回後失效。
全域性變數和靜態變數如果沒有手工初始化,則由編譯器初始化為0。區域性變數的值不可知。
4樓:匿名使用者
簡單說:乙個整形變數就是直接「型別 變數名;」。例如定乙個叫做a的整形變數。
int a;」
詳細說明:在c++中,變數宣告(declaration)只有在使用extern關鍵字時才成立,其他情況下都是定義(definition),而在使用extern的同時給變數賦初始值,則宣告變為定義,extern關鍵字也將被編譯器忽略。c++變數的作用域預設情況下是全域性的,也就是對多個原始檔可見,比如說,如果在和中都有。
int a;
則編譯器鏈結兩個檔案時會報告錯誤,「變數重複定義」。因此,要使變數定義只對該原始檔可見,就要顯式加上static關鍵字。因此,我們可以想到,如果在中有。
extern int a;
而在中有。static int a = 9;
那麼,編譯器鏈結時會給出錯誤資訊,「找不到a的定義」,因為a的定義在並只對該檔案可見,找不到a的定義因此出錯。
變數的宣告和定義是比較容易混淆的概念,因此記住一點,除非有extern關鍵字,否則都是變數的定義。
5樓:匿名使用者
總的分為區域性變數和全域性變數:區域性變數又可分為動態區域性變數(沒特殊宣告的變數一般都為動態區域性變數)和靜態區域性變數(用static關鍵字宣告的變數如:static int a;);兩者的區別在於:
靜態的區域性變數生存期比動態的區域性變數來的長,動態的區域性變數的生存期為所定義的範圍內,如在函式內定義的,函式結束,變數也跟著結束,變數的值不會儲存下來。而靜態變數的生存期為整個源程式(也可說是乙個檔案,不同環境不同稱呼)。而兩者的作用域是一樣。
只能在定義他的函式內起作用,離開了這個函式就不起作用了。
全域性變數:在函式之外定義的變數稱為全域性變數。全域性變數可以為本檔案中其他函所共用(作用域),它的有效範圍(生存期)從定義變數開始到檔案結束。
如果在同乙個原始檔中,外部變數與區域性變數同名,則在區域性變數的作用範圍內,外部變數被「遮蔽」,即全域性變數不起作用。
下面來看乙個例子:
#include""
int d=1; //宣告乙個全域性變數。
int fun(int p)
void main()
看以上內容時,你先把程式看一篇,然後把會值代進去遠算,每一次看註釋時在同一行中只要看到第二個」//「時結束。第2個「//」為第二次呼叫時看的。
以上內容有一點亂,但是希望可以幫助到你。88有什麼不明白可以再問!
c語言作用域
6樓:雲南新華電腦學校
有四種,分別如下:
c語言編譯器可以確認四種不同型別的作用慎鄭困域:
一。**塊作用域。
在k&r c中,函式形參的作用域始於形參的宣告處,位於函式體之外如果函式體內部宣告瞭名字相同的區域性變數,他們就將隱藏起來;ansi c遏止了這種錯誤的可能性,它把形參的作用域設定為整個函式體。
二。檔案作用域。
任何在**塊之外宣告的識別符號都具有檔案作用域。但是在同檔案中編寫的通過include指令包含到其他檔案中的宣告,就好像直接寫在那些檔案中一樣叢遊,它們的作用域不限於標頭檔案的檔案尾。
三。原型作用域(即函式體去掉**寬念塊的部分)。
只適用於在函式原型中宣告的引數。唯一可能出現的衝突就是在同乙個原型中,不止一次地使用同乙個名字。
四。函式作用域。
它只適用於語句標籤,語句標籤用於go語句。乙個函式中的所有語句標籤必須唯一。
希望能幫助您。
還請及時謝謝。
c語言 關於位域的使用
7樓:壹冶知秋
可以通過移位,還有位與來遍歷吧。
c語言有關作用域的問題
8樓:擁抱
按你的說法,你在「insert(p);」這一句傳入了指標p,實際上只是把main()中的指標p傳遞給了insert()函式的形式引數。
而一旦進入insert()函式之後,就算在insert()函式中,傳入引數的名字也是p,它也只不過是main()中的指標p的位址的乙個拷貝而已。你把insert()中的這個叫p的指標的指向改變了,實際上只是改變了從main()傳來的指標p的乙個拷貝的指向而已,最後如果你不把改變指向後的指標返回並賦值給main()中的p的話,main()中的p肯定是不會變的。
或者,在main()函式中,把指標p的本身的位址傳遞作為形式引數傳遞給insert()函式,這樣的話,在insert()函式中改變了位於記憶體中那個位址的指標的指向的話,那麼即使不使用return語句,在回到main()函式之後,原來的指標p的指向也變了,畢竟指標所在的記憶體位址就乙個嘛,它同一時間也只能指向乙個位置,所以在insert()裡把位於這個位址的指標的指向改變了的話,在main()裡讀取到位於這個位址的指標的時候,這個指標的指向也是被改變之後了的,因為它不能既指向這個位置又指向那個位置。
9樓:晶魚小公舉
你要改變主函式的p 的指向的話必須要insert返回乙個指標賦給p 才行,單獨在呼叫的函式里面改變指向是不會影響到main 函式的。下面也有乙個小例子供你參考。
希望能幫到你。
C語言中變數宣告的問題
有可能是你定義的變數系統已經使用了,你把total換成mytotal試試 character 2001 2001 這個二維陣列定義的太大了 我也執行了,換成character 200 2001 就不出錯了 所以可能c語言不能開這麼大的陣列,要是非要這麼大的話可以這樣 include include ...
c語言中怎麼表示變數n次方,C語言中怎麼表示1個變數n次方
用pow函式 pow函式的形式 pow double x,double y 用來求解x的y次方。使用pow函式時,如果變數原先定義為回整型,需要強制答轉換為浮點型。例如 float x,y pow x,y 求x的y次方 再例如 int x float y pow double x,y 求x的y次方 ...
C語言中怎樣定義常量變數,C語言中是如何定義常量的啊
常量的定義用const關鍵字 const 型別名 常量名 值 變數的定義是 型別名 變數名 c語言中是如何定義常量的啊 我們在用c程式設計時有時需要定義不變的變數,即常量,有兩種方法。例如 定義常量pi的兩種方式 1.define pi 3.1415926f 2.const float pi 3.1...