c 指標 區別,c 中別名 和指標 的區別

時間 2022-12-27 13:10:05

1樓:匿名使用者

這是個運算優先順序的問題,由於*運算的優先順序大於+,於是*abc+1先取出abc裡面的內容,再進行+1運算,結果就是abc內儲存的值加1;

而()會改變運算順序,先算abc+1,這是將指標abc向下移了一位,再作*運算,也就是取出了指標abc所指位置下乙個位置裡面儲存的內容,這個運算一般只在陣列中進行,因為如果是任意的乙個指標,將它移到下一位是沒有意義的。

2樓:櫻_桃子

*abc + 1 先取abc指標指向的儲存單元中的內容,再把內容加1

例如abc指向的單元中內容是5,則5+1=6=*abc + 1

*(abc+1) 指標先+1,指向原abc的下乙個儲存單元,如abc本來指向00h這個單元,+1表示指向01h儲存單元,再從01h中取內容。

3樓:網友

一樓的已經正確,我這裡舉個例子給你。

假設abc是乙個char指標,例如char *abc = abc\0";,則abc指向字串abc的位址。

那麼 *abc = abc\0";

由於每個char占有乙個位元組的位置。而(abc+1)指向字串abc的位址+1,所以*(abc+1) =bc\0"

其中\0為字串結束標記。

4樓:匿名使用者

這簡單,乙個是指標加一,乙個是abc+1的指標。

j**a的引用和c++的指標的區別

c++中引用與指標的區別

5樓:go陌小潔

c++中指標與引用的區別:

1.定義和性質的區別:

(1)指標:指標是乙個變數,只不過這個變數儲存的是乙個位址,指向記憶體的乙個儲存單元;而引用跟原來的變數實質上是同乙個東西,只不過是原變數的乙個別名而已。如:

int a=1;int *p=&a;

int a=1;int &b=a;

上面定義了乙個整形變數和乙個指標變數p,該指標變數指向a的儲存單元,即p的值是a儲存單元的位址。

而下面2句定義了乙個整形變數a和這個整形a的引用b,事實上a和b是同乙個東西,在記憶體占有同乙個儲存單元。

(2)可以有const指標,但是沒有const引用;

(3)指標可以有多級,但是引用只能是一級(int **p;合法 而 int &&a是不合法的)

(4)指標的值可以為空,但是引用的值不能為null,並且引用在定義的時候必須初始化;

(5)指標的值在初始化後可以改變,即指向其它的儲存單元,而引用在進行初始化後就不會再改變了。

(6)"sizeof引用"得到的是所指向的變數(物件)的大小,而"sizeof指標"得到的是指標本身的大小;

(7)指標和引用的自增(++運算意義不一樣;

2.指標和引用作為函式引數進行傳遞時的區別。

(1)指標作為引數進行傳遞:

#include

using namespace std;

void swap(int *a,int *b)

int main(void)

int main(void)

輸出結果為:0x22ff44 1

指標p不為null

6樓:幻夢·人生

相同點:

都是位址的概念;

指標指向一塊記憶體,它的內容是所指記憶體的位址;而引用則是某塊記憶體的別名。

不同點:指標是乙個實體,而引用僅是個別名;

引用只能在定義時被初始化一次,之後不可變;指標可變;引用「從一而終」,指標可以「見異思遷」;

引用不能為空,指標可以為空;

「sizeof引用」得到的是所指向的變數(物件)的大小,而「sizeof指標」得到的是指標本身的大小;

指標和引用的自增(++運算意義不一樣;

引用是型別安全的,而指標不是(引用比指標多了型別檢查)

7樓:匿名使用者

引用就是重新命名:

int a = 0;

int& b = a;

就是給 a 這個變數重新取乙個名字。

所以 你在使用 a或b的時候其實都是使用的同乙個變數。

比如:有人個人叫張三。張三的好朋友常常叫張三 小張。

也就是說 張三和小張是同乙個人。

8樓:笨笨de世界

引用是別名,共享一塊記憶體空間,而指標是要單獨佔4位元組的記憶體空間的,裡面存的是另一塊記憶體位址的索引。

請簡述c++中引用和指標的區別

9樓:砍侃看

關於指標和引用的區別,c++ primer是這麼說的:

1、引用總是指向某個物件;定義引用時沒有初始化是錯誤的。

2、賦值行為有差異。給引用賦值修改的是該引用所關聯的物件的值,而不是使引用於另乙個物件關聯。引用已經初始化,就始終指向同乙個特定物件。

舉個列子:引用就像是你的身份證號,一出生就有了,而且終身不變,也不能把這個身份證號給別人。無論什麼時候,對這個身份證號做的操作,都是對你做操作。

指標就像是你公司的工號,可以把這個工號指向你,也可以改變這個工號讓它指向別人。

10樓:影者東昇

①從現象上看,指標在執行時可以改變其所指向的值,而引用一旦和某個物件繫結後就不再改變。這句話可以理解為:指標可以被重新賦值以指向另乙個不同的物件。

但是引用則總是指向在初始化時被指定的物件,以後不能改變,但是指定的物件其內容可以改變。

②從記憶體分配上看,程式為指標變數分配記憶體區域,而不為引用分配記憶體區域,因為引用宣告時必須初始化,從而指向乙個已經存在的物件。引用不能指向空值。

注:標準沒有規定引用要不要占用記憶體,也沒有規定引用具體要怎麼實現。

③ 從編譯上看,程式在編譯時分別將指標和引用新增到符號表上,符號表上記錄的是變數名及變數所對應位址。指標變數在符號表上對應的位址值為指標變數的位址值,而引用在符號表上對應的位址值為引用物件的位址值。符號表生成後就不會再改,因此指標可以改變指向的物件(指標變數中的值可以改),而引用物件不能改。

這是使用指標不安全而使用引用安全的主要原因。從某種意義上來說引用可以被認為是不能改變的指標。

④不存在指向空值的引用這個事實,意味著使用引用的**效率比使用指標的要高。因為在使用引用之前不需要測試它的合法性。相反,指標則應該總是被測試,防止其為空。

⑤理論上,對於指標的級數沒有限制,但是引用只能是一級。如下:

int** p1; /合法。指向指標的指標。

int*& p2; /合法。指向指標的引用。

int&* p3; /非法。指向引用的指標是非法的。

int&& p4; /非法。指向引用的引用是非法的。

注意上述讀法是從左到右。

在c++種,關於指標的這兩種表示有什麼區別:double * a和double ** a?兩個**是什麼意思呢?

11樓:匿名使用者

1、double * a;意思是a指向乙個double變數的位址。

2、double **a;意思是a指向乙個位址,而這個位址指向乙個double變數。

在電腦科學中,指標(pointer)為程式語言中的乙個物件,利用位址,它的值直接指向(points to)存在電腦儲存器中另乙個地方的值。

c++中別名&和指標*的區別

12樓:這麼個人

指標是一種實際存在的資料型別,本身就需要記憶體空間。

引用就是乙個變數的別名,它不是一種資料型別。

訪問指標指向的內容,需要解引用運算子 *,而訪問引用繫結的變數,則跟訪問變數本身方式一樣。

定義乙個指標,不一定非得初始化,當然初始化更好,但是定義乙個引用,必須初始化。

指標(除了指標常量)可以賦值,引用一經初始化跟乙個變數繫結後,就不能再賦值去跟別的變數繫結。

c++中「指向行的指標」是什麼指標?與普通指標有什麼區別?

13樓:樂灬天

「指向行的指標」,它指向的記憶體裡面存放的。

依然是指標,而普通指標指向的記憶體裡面存放的是相應型別的資料,比如普通指標int *p,p指向的記憶體存放的是int型資料;而int (*p)[5],其中p指向的記憶體存放的還是指標,該指標指向乙個存放5個資料的陣列,可以理解為指向行。

c++這兩個指標什麼區別

14樓:heart阿飛

如果不帶*的情況下,二者相同,都是pointer_1自加。

如果是(*pointer_1)++

和*pointer_1++

那麼由於++優先順序更高。所以 前者是*pointer_1 也就是pointer_1指向的值自加。

後者是pointer_1自加。*pointer_1不變。

15樓:u無力哀嘆丶

第一種形式是取p指向的值。

第二種形式沒見過 可以想象一下*p是在取p所指的值 *p可以看做是數值。

那麼a.*p的話應該語法上有問題 因為a沒有 *p這個成員。

請簡述c 中引用和指標的區別,淺談C 中指標和引用的區別

砍侃看 關於指標和引用的區別,c primer是這麼說的 1 引用總是指向某個物件 定義引用時沒有初始化是錯誤的。2 賦值行為有差異。給引用賦值修改的是該引用所關聯的物件的值,而不是使引用於另一個物件關聯。引用已經初始化,就始終指向同一個特定物件。舉個列子 引用就像是你的身份證號,一出生就有了,而且...

c指標陣列問題,C 中關於指標陣列的問題。

typedef 是 定義一種資料型別 就好像內建的資料型別如 int 它僅是乙個定義,不產生例項物件,即不分配任何記憶體,怎麼能給它賦值呢?對陣列賦初值的方法用for迴圈,在這裡還可用memset nod的記憶體分配在動態棧上,所以值不能確定,要初始化,必須使用顯式的方式。cdma980的回答是對的...

c 中指標基本概念的問題,C 中定義指標問題

const int a const修飾指向的物件,a可變,a指向的物件不可變 int const a const修飾指向的物件,a可變,a指向的物件不可變 int const a const修飾指標a,a不可變,a指向的物件可變 const int const a 指標a和a指向的物件都不可變 我們...