[英]comparison of the pointers in C
當我做這樣的事情時,我有一些簡單的問題:
int* ptr1
int* ptr2
if(ptr1 == ptr2)...
我實際上比較的是什么:
1. addresses where ptr1 and ptr2 saved
2. addresses where content of pointers saved
如果有 1,我如何檢查 2?
這比較了指針值,它們是地址。
所以ptr1==ptr2
測試兩個指針是否指向同一個地址——你的#2。
你可以用&ptr1 == &ptr2
來表達#1——比較指針本身的地址,但在這里你知道那將是錯誤的。
您正在比較 ptr1 指向的地址是否與 ptr2 相同(並且相反)。 這意味着,您的選項 2。
您比較實際的指針。
從你的措辭中我不確定你真正想要做什么,但它可能是其中之一:
if (*ptr1 == *ptr2) ...
或者
if (&ptr1 == &ptr2) ...
要比較指針實際指向的內容,請使用:
if(*ptr1 == *ptr2)...
當你聲明
int *ptr1;
您正在定義一個指向 integer 的變量(具有地址)。 您可以通過獲取該變量的地址(&)來獲取該變量的地址,即
&ptr1
從根本上說,ptr1 將包含 memory 位置的地址(如果 integer 指向已為此類事物分配空間的位置,則可以存儲該位置)。
比較 ptr1 和 ptr2 變量的值會告訴你它們是否指向同一個變量; 比較 ptr1 和 ptr2 變量的取消引用值將告訴您它們指向的值是否相同。
2)指針的值以及它們指向的地址。
比較指針指向的值:
if (*ptr1 == *ptr2)
比較要比較存儲指針的地址,請使用:
if ( &ptr1 == &ptr2 ) since these are the addresses of the pointers.
任何時候你使用“a==b”形式的東西,你都在比較變量a的內容和變量b的內容。 在 a 和 b 是指針的情況下,它們的內容是一些數據的地址,因此如果它們指向相同的位置,a==b 將返回 true,否則返回 false。
要比較兩個變量的地址,您需要執行 &a==&b。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.