簡體   English   中英

為什么可以將未初始化的變量地址傳遞給 function 的指針參數

[英]Why it is ok to pass an uninitialized variable address to pointer paramter of a function

假設我們有這樣的 C function,

void assign(int* refs)
{
 *refs = 123;
}

並以兩種方式調用它

1.

int a;
assign(&a); // a is assigned a value.
int* a;
assign(a);// runtime error

我知道給指向 null 的指針賦值是不行的,因為沒有對應的 memory 被分配。

[1]為什么傳遞未初始化變量的地址效果很好?
[2]a沒有被初始化時&a是什么意思。

該值未初始化,但已分配 memory。指針指向 memory,而不是值。

讀取未初始化的變量只是一個問題。 獲取它的地址很好,因為變量的地址在其生命周期內是固定的。

在您的第一個示例中,您有一個int類型的未初始化變量。 您獲取其地址(如上有效)並將其傳遞給 function ,后者隨后取消引用該地址以寫入a的值。

在第二個示例中,您有一個int *類型的未初始化變量,但隨后您將其傳遞給 function。 這是無效的,因為變量的值是不確定的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM