導航:首頁 > 源碼編譯 > 代碼參數不初始化能編譯嗎

代碼參數不初始化能編譯嗎

發布時間:2022-05-06 11:18:37

1. c# ref和out區別僅僅是參數需不需要初始化

ref和out使用時的區別是:
①:ref指定的參數在函數調用時候必須初始化,不能為空的引用。而out指定的參數在函數調用時候可以不初始化;
②:out指定的參數在進入函數時會清空自己,必須在函數內部賦初值。而ref指定的參數不需要。

一:ref 關鍵字使參數按引用傳遞。
其效果是,當控制權傳遞回調用方法時,在方法中對參數所做的任何更改都將反映在該變數中。若要使用 ref 參數,則方法定義和調用方法都必須顯式使用 ref 關鍵字。
也即是說,在方法中對參數的設置和改變將會直接影響函數調用之處(代碼①及②)。無論是函數的定義還是調用時均不可忽略關鍵字ref.
二:ref定義的參數在使用前必須初始化,無論在函數定義時候參數有沒有賦予初值。這條正好區分out指定的參數可以不在調用函數的時候進行初始化。
三 :對out來說,第一條同樣適用。將代碼①以及②中的ref全部修改成out,則可與使用ref得到同樣的結果。

四:out指定的參數必須在函數定義的時候就賦初值。否則則出現錯誤。對比ref指定的參數則可以不在函數內部進行賦初值,在函數調用時候再賦初值也可以。

2. C語言變數必須初始化嗎

C語言變數可以不初始化。直接定義int
a;
printf("%d",&a);這兩句程序是直接定義並且輸出變數的值,這個要看編譯器了,有的編譯會輸出0,這是編譯器幫你初始化了,默認初始化為0。如果有的編譯器不初始化的話會報錯,即使不報錯,那麼printf輸出的數字是隨機的,是這個內存中之前存儲的數據。

3. java局部變數初始化,String類型為什麼不用初始化就能使用

局部變數String需要初始化!

以下代碼:

public class Test {

public static void main(String[] args) {

String s;

System.out.println(s);

}

}

這個代碼直接報錯,無法編譯

你上面的代碼沒錯是因為你在while循環里對s進行了初始化

4. java類變數不初始化輸出為什麼出錯

你給出的代碼中的main 方法是 public void main(String [] args)還是 public static void main(String [] args)?
1,如果聲明的變數在 public static void main(String [] args) 方法中,那麼變數必須是 static ,否則編譯出錯,靜態方法內不能有非靜態變數
2,另外,如果 變數 在 public static void main(String [] args) 方法中聲明,必須進行初始化,否則會出現編譯錯誤

5. 在java中變數一定要初始化嗎

變數定義可以不被初始化,但是這個變數做為局部的變數的話就必須被初始化,否則會編譯出錯。所謂局部變數就是在一個函數或著代碼塊中定義的變數。我想你定義的變數也是這樣了。

6. C語言中:靜態變數是不是可以不需要初始化

可以,但是如果沒有初始化,則靜態變數的內存在編譯時會自動清零。

7. Java:為什麼這兩段代碼里的變數i有的需要初始化有的不需要呢

  1. 對於類的成員變數,不管程序有沒有顯式的進行初始化,Java虛擬機都會先自動給它初始化為默認值。

  2. 局部變數聲明之後,Java虛擬機就不會自動給它初始化為默認值,因此局部變數的使用必須先經過顯式的初始化。
    但是需要聲明的是:對於只負責接收一個表達式的值的局部變數可以不初始化,參與運算和直接輸出等其它情況的局部變數需要初始化。

    你第一種情況為 成員變數系統自動初始化為 0 了

8. C語言:數組沒初始化也沒賦值,編譯系統是否能給沒賦值的元素自動(數值型)賦0值或(字元型)賦'\0'值。

不會。利用下面這個程序測試一下就知道了:
#include <stdio.h>
#define Times 40

void main()
{
long x[Times];
int a;

// 測試系統會不會自動為數組賦值
for(a=0;a<Times;a++)
{
printf("第%2d個月:%d\n", a+1, x[a]);

if ((a!=0) && (a%10 == 0))
printf("\n");
}

// 求值
x[0] = 1;
x[1] = 1;
for(a=2;a<Times;a++)
x[a]=x[a-1]+x[a-2];

// 輸出結果
for(a=0;a<Times;a++)
{
printf("第%2d個月:%d\n", a+1, x[a]);

if ((a!=0) && (a%10 == 0))
printf("\n");
}
}

9. 為什麼全局變數無須初始化,局部變數必須初始化

這個說法本身就不對。變數需要不需要初始化是根據需要來進行的。全局變數有時也需要初始化,而局部變數其實大部分時間都沒有初始化。不要把賦初值與初始化混淆了:初始化是由編譯器做的,形成可執行文件後,那些變數的值就在軟體文件中放著,執行程序時直接使用了;而賦初值是由C/C++代碼實現的,程序開始執行後才給變數賦的值。只是全局變數如果不顯式初始化,那麼編譯時由編譯器自動初始化為0,而編譯器對局部變數是否有值視而不見,所以在程序開始執行前局部變數的「值」是機器垃圾。因此,局部變數在獲得初值前若當右值使用就要出問題!局部變數獲得初值有兩個途徑:一是初始化,如int x=3;就是在聲明x的類型時同時初始化為3——x==3這個值在編譯時就被編譯器確定了,程序啟動後不再執行int x=3;這種操作;二是賦初值,如int x;x=3;,int x;在編譯時執行,只聲明了變數類型,值是垃圾,x=3;是C/C++語句,每次啟動程序都要執行,將變數x賦值為3。所以,說「局部變數其實大部分時間都沒有初始化」,就是指我們創建函數時往往只寫int a,b,c,x,y,z;而並不給每個變數都初始化一個確定的值,而是在使用前給它們賦初值,如緊接著寫scanf("%d%d%d",&a,&b,&c);或for(x=0;x<10;x++){...}(其中x=0是給x賦初值)等。

閱讀全文

與代碼參數不初始化能編譯嗎相關的資料

熱點內容
分卷文件解壓一直重復 瀏覽:469
java學校哪個好 瀏覽:342
什麼app能聽羅輯思維 瀏覽:904
python試驗設計 瀏覽:697
在線壓縮圖片怎麼辦 瀏覽:478
我的世界如何把伺服器掉線 瀏覽:539
東方衛視在哪裡直播app 瀏覽:91
如何連接到伺服器上的資料庫 瀏覽:870
文件夾文字轉文本代碼 瀏覽:105
python代碼字典統計排序1 瀏覽:506
氣場pdf 瀏覽:581
電腦cmd和python的差別 瀏覽:829
小程序源碼價格 瀏覽:133
伺服器合並後迴流會怎麼樣 瀏覽:826
程序員如何調試代碼 瀏覽:726
PHP實例方法 瀏覽:823
南昌朝陽解壓娛樂 瀏覽:848
linux所有命令無效 瀏覽:281
如何更新伺服器2016密碼 瀏覽:292
guidjava生成 瀏覽:904