在c 中,int p和int p有什麼區別

時間 2021-06-25 14:41:58

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樓:匿名使用者

前者是地址的指標

後者是指標的地址

p(int a是什麼意思,“int p”和“int p”有什麼區別?

問問題不要斷章取義。p int a這個不是一個完整的語句,前面後面都可能省略內容。float b 3.14,a b int p int a 這個才是完整的,前面有int 後面有分號。表示將指標a的型別轉換為整型指標再賦給p。 鈄問青 你好!int p m 定義的陣列指標,表示定義一個指標變數,此指標...