[英]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]
對於第二個問題,提示是*p
和p
之間的差異。 例如,在p
本身可能為NULL的情況下,我不會使用第二個。
如果f()
在每次調用時返回對不同整數的引用,則f()+=5
可能與f()
= f()
+5不同。 只有當f()
從某個全局變量讀取時才會發生這種情況,每次調用它時都會有所不同。
if (p!=NULL && *p !=0)
和if (*p !=0 && *p !=NULL)
之間的區別在於第一個檢查p
是否為null然后檢查p
是否為int
是0
。 第二個只檢查p
指向的int
是否為0
(並執行此檢查兩次)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.