- 以前一直沒注意的問題:
根據scanf函式的定義,其接收元素必須是型別與控制字串元素對應的變數的位址。&是取位址操作符,當接收元素不是位址時要用&獲得變數的位址,當接收元素已經是位址時就不用&了。
輸入整形陣列元素要加「&」(位址符號),輸入字串則不用。
scanf("%d",&a[i]);//讀取第i個值
scanf("%s",s[i]);//讀取第i個字串
對比(1):char a;scanf("%c",&a);//字元要加
(2):char a[10];scant("%s",a);//字串陣列不用加
舉個例子#include "stdio.h"
int main(void)
f(int* a)與f(int& a)的區別?
int i=5;
int &j=i;
說明:
(1)double & rr=1; 等價與 double temp; temp=double(1); double & rr=temp;
(2)int
a; int & p=a; int b=8; p=&b; //正確,指標變數的引用
void & a=3; //不正確,沒有變數或物件的型別是void
int & ri=null; //不正確,有空指標,無空引用
(3)int & ra=int; //不正確,不能用型別來初始化
int *p=new int; int & r=*p; //正確
(4)引用不同於一般變數,下面型別宣告是非法的:
int &b[3]; //不能建立引用陣列
int & *p; //不能建立指向引用的指標
int &&r; //不能建立引用的引用
(5)當使用&運算子取乙個引用的位址時,其值為所引用變數的位址,
2.引用引數
引用的乙個重要應用就是作為函式的引數。在使用引用做引數時不必使用*,並且又沒有位址與變數本身的差別,從而簡化了程式,
3. 引用和指標使用原則
1.在可以用引用的情況下,不要用指標;
2.引用不允許重新賦值.,當使用乙個變數指向不同的物件時,必須用指標;
3.引用不允許為空,當存在物件為空時,必須使用指標。
總結:引用的正常是固定數,不為空。指標用來移動,重新賦值,++。
喜歡的一些話(不斷更新)
人生最有價值的時刻,不是最後的功成名就,而是對未來正充滿期待與不安之時。其實題目很多時候不是水不水的問題,而是你對於題目是如何理解以及解決的?建議你有時間思考下這個問題,什麼樣的題目是難題以及他們為什麼是難的,是因為高深,還是因為複雜,還是因為這個問題所涉及的知識不在你的能力範圍之內?這幾個問題想明...
Beta 使用者問題反饋及處理 一直更新
使用者id 呂 張 問題描述 點選選擇物理實驗按鈕 子選單 選擇實驗,無響應 期望行為 點選選擇物理實驗按鈕 子選單 選擇實驗,選擇框隱去,左側資料欄出現對應選擇實驗的資料輸入 右側文件欄出現對應預習pdf檔案。使用者環境 chrome瀏覽器 版本要求符合 查明原因 chrome瀏覽器對某關鍵js檔...
mysqld 一直starting 的問題
今天開啟虛擬機器上的centos,發現啟動mysqld的時候,它一直處在starting.等了n久還沒起起來,也不failure。無奈,進不了系統,在網上也搜不到跟我相似的狀況。重啟,在grub介面改用單使用者模式 也就是方式1 進系統 被逼的。之後嘗試手動service mysqld start,...