1樓:風若遠去何人留
int &p為引用,而int p為定義變數。二者區別如下:
1 引用在定義的時候必須賦值,否則編譯會出錯。正確的形式為int &p = a;
其中a為int型變數。
2 引用在定義時不會分配空間,只是初始化變數的一個別名。如int &p = a;的形式,後續對p的操作,與對a操作完全等價。
2樓:匿名使用者
一個為指標形態,一個只是單純的變數而已。
如此題所示,func宣告時p為指標,q為變數,因此main中呼叫func傳入x和y時,x傳遞的是地址(address or reference),y只是變數,因此y的值不會因為func中的運算而改變,但是x會。
3樓:deqr雲飄
(1)給這個程式加上註釋(可選) lz的**有貼上錯誤,現簡單註釋如下: #include /*包含標頭檔案*/ void main() /*主函式*/ { long int num; /*宣告長整型變數,用來儲存輸入的數值*/ int indiv,ten,hundred,thousand,ten_thousand,place; /*宣告整型的數位變數(個位,十位,百位,千位,萬位)及數位個數*/ printf("請輸入一個正整數(0~99999):"); /*提示輸入整數*/ scanf("%ld",&num); /*輸入長整數*/ if(num>9999) /*按照從大到小的順序進行判斷,如果大於9999,說明輸入的是5位數*/ place=5; /*位數變數值置為5*/ else if(num>999) /*如果大於999,說明輸入的是4位數*/ place=4; /*位數變數值置為4*/ else if(num>99) /*如果大於99,說明輸入的是3位數*/
place=3; /*位數變數置為3*/ else if(num>9) /*如果大於9,說明輸入的是2兩位數*/ place=2; /*位數變數置為2*/ else place=1; /*否則置為1*/ printf("位數:%d",place); /*輸出數值的位數*/ printf("每位數字為:"); /*提示每位數字的輸出*/ ten_thousand=num/10000; /*整型數除10000,得到萬位*/ thousand=(int)(num-ten_thousand*10000)/1000; /*輸入的數值減去萬位*10000,剩下的千位數,然後再除以1000,得到千位個數*/ hundred=(int)(num-ten_thousand*10000-thousand*1000)/100; /*餘下類推,方法同上*/ ten=(int)(num-ten_thousand*10000-thousand*1000-hundred*100)/10; indiv=(int)(num-ten_thousand*10000-thousand*1000-hundred*100-ten*10); switch(place) /*以下是根據數值位數進行判斷,以輸出不同位數的數值及相應個位數*/ { case 5:
printf("%d,%d,%d,%d,%d",ten_thousand,thousand,hundred,ten,indiv); /*輸出正常順序數值*/ printf("反序數字為:");
在c++中,“int &p”和“int p” 有什麼區別?
4樓:匿名使用者
int &p為引來用,而int p為定義變數。二者源區別如下:
1 引用在bai定義的時候必須
du賦值,否則編zhi譯會出錯。正確的形式為daoint &p = a;
其中a為int型變數。
2 引用在定義時不會分配空間,只是初始化變數的一個別名。如int &p = a;的形式,後續對p的操作,與對a操作完全等價。
c++中int*&p和int&*p的區別
5樓:仁昌居士
c++中int *&p和int &*p的區別為:性質不同、 使用不同、訪問不同。
一、性質不同
1、int *&p:int *&p是指標的int型別引用。
2、int &*p:int &*p是引用的int型別指標。
二、 使用不同
1、int *&p:int *&p是指標 的 別名 ,可以當成指標使用。
2、int &*p:int &*p指標不能指向引用,不具有確定的儲存,無法直接使用。
三、訪問不同
1、int *&p:int *&p可以直接訪問得到指標指向的數值。
2、int &*p:int &*p無法訪問得到表示引用的儲存的數值。
6樓:匿名使用者
int &*p; 是不正確的,*與p靠得最近,所以p是一個指標,但是這個指標的型別是int &,所以這個是錯吳的, 因為不能建立引用的指標。
int *& p, 是正確的, &與p靠得最近,所以p是一個引用,這個引用的型別是int*,也就是一個指標變數的引用,但是必須初始化,否則也是錯誤的。.
7樓:匿名使用者
如果按照正常的解讀(從右到左),
int*&p 是 指標的引用。 他是一個 指標 的 別名,一般可以當成 指標 使用。有時候,可以直接他的值,成為其他指標的引用
int&*p 是 引用的指標,這個是非法的,指標不能指向引用。引用不具有確定的儲存,無法間接訪問得到表示引用的儲存的左值,所以乾脆人為規定禁止構造指向引用的指標型別。
8樓:匿名使用者
前者是地址的指標
後者是指標的地址
intp 和int p有什麼區別呀
int p 3 是定義了一個整型陣列 p 陣列大小為 3 int p 3 是定義了一個陣列指標 p 用於指向一個大小為 3 的整型陣列 還有疑惑,可以 hi 我!變數申明的組copy成結構 型別 變數名 首先這兩bai個變du量申明都是一個長度為3的陣列的 zhi 3 相同點刨除不看dao,下面看不...
請問下在C語言中intp 與intp到底有什麼區別,我始終不太懂
樓上的回答是在不敢苟同 p 4 p 4 p的區別 由於裡面牽扯一些東西比較深,我簡單的講講吧 p 4 是指標陣列,他是陣列。陣列裡面放的是指標,簡單的說定義了4個指標,分別是 p 0 p 1 p 2 p 3 相當於將這四個指標打包到這個陣列中 p 4 是陣列指標,他是指標並且是一個指向二維陣列的指標...
C中堆和堆疊有什麼不一樣,C 堆和堆疊有什麼區別
一個由c c 編譯的程式佔用的記憶體分為以下幾個部分 1 棧區 stack 由編譯器自動分配釋放 存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。2 堆區 heap 一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由os 注意它與資料結構中的堆是兩回事,分配方式倒是類...