回答
如果代碼是int *a = *b;
那麼*b
是指向一個整數的指針(必須與a
的類型匹配)。這意味着b
是指向一個整數的指針。然後a
將包含*b
指向的地址,而不是指向b
指向的地址。
但是,如果代碼是int *a; *a = *b;
那麼這就不同了。在這種情況下,您正在將b
指向的對象複製到a
指向的地址中。該對象必須是整數,因此a
將指向整數的副本(因此您可以更改*b
和*a
不會更改)。順便說一句,如果a
在未初始化,那將是未定義的行爲(很可能是崩潰)。
*a = *b
這意味着具有地址b
複製的存儲器內容到存儲器具有地址a
如果(* A == * b)中,這意味着:如果檢查的存儲器具有地址a
含量等於內容的內存地址b
如果int * a = * b,會指向b引用的對象嗎?
這取決於b
是什麼。
編輯此外,如果double * a = 3.0,是否指向3.0?
不,這是一個無效的陳述。您應使用地址初始化a
。
必須給你警告...轉換int
到int *
沒有投 這也取決於究竟是什麼p
嘗試以下操作:
#include <stdio.h>
int main(void)
{
int val = 5;
int *b = &val;
int *a = *b;
printf("&val = %p; b = %p, a = %p\n", &val, b, a);
return 0;
}
輸出:
&val = 0xbfb652d4; b = 0xbfb652d4, a = 0x5
(地址值可能會更改)
a
實際上是一個指針,其值爲b
指向的值。除非b
本身是指向指針的指針,否則a
可能指向無效的位置。
由於您沒有提供關於b
的信息,因此您的問題的第一部分沒有任何意義。
至於第二部分(約double *a = 3.0
)... C和C++語言都禁止使用非指針值(除空指針常量外)指針的初始化。這立即意味着double *a = 3.0
不是有效的C或C++代碼。它根本不會編譯。再例如,int *a = 5
代碼也適用。
在C和C++中,爲了將非指針值轉換爲指針類型,需要顯式強制轉換。這種轉換的結果是實現定義的。
指針是任何可變的參考,並存儲在它的其他變量的位置... 你的例子應該是這樣的:
雙一= 3.0; int b * = a;
所以指針(B)將同闖民宅的3.0
- 1. 對象B和對象B對象的引用沒有指針
- 2. A→B,B→A類協會
- 3. swap(int&a,int&b)和swap(int * a,int * b)。有什麼區別?
- 4. 向量a = b,如果我們修改它對b有影響嗎? java的
- 5. 從A - > B和B-A指向的域名
- 6. java.lang.Math.max(int a,int b)線程安全嗎?
- 7. 浮點錯誤會導致'a /(double)b> = a/b'失敗嗎?
- 8. 「int N = a == b?a:a + b == 10?a + b:0;」的含義
- 9. 當b不是零時,我總是有`(a/b * b)+ a%b == a`嗎?
- 10. 輸入(a + b)** 2,輸出a * a + a * b + b * a + b * b
- 11. Python a,b = b,a + b
- 12. Neon指令,vsub_f32(a,b),是a-b還是b-a?
- 13. public void add(int a,int ... b){
- 14. int A不等於int B
- 15. 在Java中,a和b是布爾值,a && b和b && a會評估相同的結果嗎?
- 16. SQL將b和b指向
- 17. 對於非零'b',表達式「(a/b)* b + a%b - a」的表達式總是爲零嗎?
- 18. int * const a = int const * b,對於obj(obj * const a = obj const * b)是否爲true?
- 19. 差(isset(A,B)),如果(isset(一)&& isset(B))
- 20. ruby a = b || c如果b未定義
- 21. 如何從對象B調用對象A的方法,而對象B本身是A對象的屬性?
- 22. 從{a-b,b-c,c-a}改變爲{(a,b),(b,c),(c,a)}?
- 23. B = A對B = A [:]在串|列出
- 24. 混合兩個矢量:[a a]和[b b] to [a b a b]
- 25. 如果(a && b)比(a)如果(b)需要更多時間?
- 26. 如果不是(a而不是b),如果(不是a和b)
- 27. 未定義的引用 - 應該在C++中的`a = -b;`和`a = -1 * b;`和`a = 0-b'之間有區別嗎?
- 28. 如果A和B是單子,如何將A [B [C]]轉換爲B [A [C]]?
- 29. A == B對B == A,有什麼區別
- 30. 對於所有整數對a,b(l≤a≤b≤r)的xor b的最大值
值的變量(A),這將是一個在您的標題,但'B'可能是'nullptr'什麼的。 – chris
取決於:什麼是b? –
'double * a = 3.0;'不應該編譯。 – chris