我很困惑scanf()
。 當我們從鍵盤讀取數據時,我們何時使用&
。 據我的理解,&
總是在你想讓程序讀入某些內容時使用。何時使用&當讀取輸入
Eg. scanf("%c",&varA) or scanf("%d",&varA)
我也明白,當你使用一個指針,你不爲scanf()
使用&
。
如果我想scanf()
東西到數組呢?我使用&
? 我知道一個數組的名稱計算爲數組的第一個元素的地址,這也是一個指針。
我很困惑scanf()
。 當我們從鍵盤讀取數據時,我們何時使用&
。 據我的理解,&
總是在你想讓程序讀入某些內容時使用。何時使用&當讀取輸入
Eg. scanf("%c",&varA) or scanf("%d",&varA)
我也明白,當你使用一個指針,你不爲scanf()
使用&
。
如果我想scanf()
東西到數組呢?我使用&
? 我知道一個數組的名稱計算爲數組的第一個元素的地址,這也是一個指針。
傳遞給scanf
後的第一個參數是所有地址。您需要提供變量的地址以分配輸入的值。
這就是爲什麼當您讀取變量的值時,必須使用&
運算符來傳遞其地址。
例如,
int n;
scanf("%d", &n);
還可以分配變量的地址的地址的指針,並使用該:
int n;
int *p = &n;
scanf("%d", p);
在陣列的情況下,數組的名稱是實際的基地址,即第一個元素的地址。您可以使用在scanf
太:
int arr[4];
scanf("%d", arr); // the input value will be stored in a[0]
scanf("%d", &arr[0]); // does the exactly same thing as the statement above
scanf("%d", &arr[1]); // reads the input into a[1]
scanf("%d", a + 1); // does the same as above
這種方式是閱讀串有用而不輸入空格:
char str[64];
scanf("%s", str);
如果我想scanf()到數組中?
這取決於你是什麼陣興趣。
scanf("%s", s);
沒有&
操作(給出s
是字符數組)。scanf("%d", &a[i]);
,因此您將需要&
運算符。scanf()
使用format string,所以對於特定的變量一個瞭解還需要了解哪些將給出變量的地址
1)對於正常變量int a
,&
是需要的,scanf("%d", &a);
2)對於一個指針變量int* a
,不需要&
,scanf("%d", a);
3)對於數組INT a[10]
,
&
是scanf("%s", a);
&
,scanf("%d", &a[0]);
你只需要提供一個指針作爲參數來存儲結果。如果你使用非指針變量,那麼你使用'&'來獲取它的地址。另一方面,如果指針從別處傳遞到函數,那麼就可以直接使用它而不用'&'。如果你想存儲'a [i]',你可以使用'&a [i]'或者'(a + i)'得到相同的結果。 –