簡體   English   中英

有關功能和指針的功課需要幫助

[英]Need help for homework about function and pointers

假設f()返回對整數的引用( int & f(); ), f()+=5; f()=f()+5; 是不同的,解釋如何並給f()的pesudo代碼來說明這種差異。

如果p是int *p ,那么C ++中這兩個語句之間有什么區別:

if (p!=NULL && *p !=0).... 
if (*p !=0 && p !=NULL)....

在第一個中,您可以使用f()聲明兩個靜態變量和一個指向其中一個的靜態指針。

然后為每個調用交替返回它們,例如(偽代碼,因為它是作業):

def f():
    static var1 = 0;
    static var2 = 42;
    static pointer curr_var = reference of var1
    if curr_var == reference of var1:
        curr_var = reference of var2
    else:
        curr_var = reference of var1
    return curr_var

或者更糟糕的是:

def f():
    static var1 = array[1024];
    static idx = -1;
    idx = (idx + 1) % 100
    return reference of var1[idx]

對於第二個問題,提示是*pp之間的差異。 例如,在p本身可能為NULL的情況下,我不會使用第二個。

如果f()在每次調用時返回對不同整數的引用,則f()+=5可能與f() = f() +5不同。 只有當f()從某個全局變量讀取時才會發生這種情況,每次調用它時都會有所不同。

if (p!=NULL && *p !=0)if (*p !=0 && *p !=NULL)之間的區別在於第一個檢查p是否為null然后檢查p是否為int0 第二個只檢查p指向的int是否為0 (並執行此檢查兩次)。

暫無
暫無

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

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