如果值存儲在一個地址,那麼請問這個聲明做獲取值使用間接運算符
int a = 10;
其存儲在一個或者在&一個地址的值。而如果將其存儲在一個地址中的值,那麼我們爲什麼不能用間接的方式這個變量是這樣的:
printf("%d", *a);
如果不是,那麼我們怎麼能說,每個值都有一個唯一的地址,我們可以使用間接運算符訪問它們。
編輯:如果我認爲間接僅用在指針,然後再考慮這一點:
int b[10];
b[0] = 4; // Give it some value
現在我們知道,B [0]是一個標量,並且可以在任何地方使用,其中標量值是必要的。但是,在這種情況下,我們可以用間接的方式是這樣的:
printf("%d", *b); // print 4
是不是有趣的是,我們可以在這個標量變量使用指針,但沒有對數組變量聲明不能使用。
在我看來,編譯器會自動生成可變的間接聲明是這樣的:
int a = 4;
所以,間接是不可能的,因爲我們正在把它的另一個間接這是不合法的,除非當案件變量聲明那樣:
int a = 4;
int *b = &a;
int **c = &b;
編輯2:您可以scanf("%d", &a)
作爲證明其表示存儲在中的未地址的值。
間接運算符的操作數必須是指向類型的指針。 – Sanoob
數組名稱是特殊的,它們像指針一樣行爲。 –
*它將值存儲在&a *中的一個或一個地址中,而不是必需的。 'a'可以存儲在一個寄存器中,或者在某些情況下它可能完全被優化掉。 'a'不是一個地址,它是一個'int'變量,編譯器*可能會使用一個內存位置來實現。 – Caleb