有關運算子pp有什麼區別,有關運算子px,px有什麼區別

2021-03-03 20:30:23 字數 5888 閱讀 5365

1樓:重定向的憂傷

我簡單解釋一下

如果p是乙個

int型別的指標,x是int型別,p=&x就是p指向x所在的記憶體位址如果p是乙個內int指標型別的指標,

容x是int型別,*p=&x就是讓指向的int型別的指標指向x所在的記憶體位址,前提是,你已經為p開闢了空間,不然p指向的記憶體不安全。

如果*p=&x這句話處於乙個定義的位置 例如 int *p=&x,那麼就相當於定義了乙個int型別的指標p,指向x所在的記憶體位址。 這個時候,*不是取值的意思,而是定義指標的符號。

建議題主好好去看一下c語言的課本,只要搞清楚指標是什麼,取值是什麼,取位址是什麼,這些問題就完全不是問題。

c語言中,設p是乙個指標,*p=&x與p=&x有什麼區別

2樓:匿名使用者

前者是在定義指標時才成立,意思是定義指標p是變數x的位址。後者是程式語句中的取x位址賦值給p。

3樓:聽不清啊

*p=&x是在定義變數時;

p=&x是在定義變數後。

int x,*p=&x;

或:int x,*p; p=&x;

4樓:匿名使用者

兩個語句不可能同時出現,必然有乙個是錯誤的。

*p=&x:指的是指標p的」值」是乙個指向x的指標;

p=&x:指的是指標p指向x。

*p=&a,*p=a和p=&a各是什麼意思,有什麼區別?

5樓:匿名使用者

表示式的意思:

1、*p=a的意思:將a的值賦給p指標指向的位址的值;

2、p=&a的意思是:將a的位址賦給指標p;

3、*p=&a的用法錯誤。

區別在於:

p=&a就是用a的位址對p賦值,a是乙個變數,&a就是儲存這個變數的記憶體位址,指標儲存的就是乙個位址,*p就是這一位址中的內容。

擴充套件資料另類*和&

兩個地方要注意: 在程式宣告變數的時候的*,只是表明「它是乙個無符號整數,這個整數指向某個記憶體位址,一次訪問sizeof(type)長度」。這點不要和(*)操作符混淆;

在c++程式宣告變數的時候的&,只是表明「它是乙個引用,這個引用宣告時不開闢新空間,它在記憶體分配表加入新的一行,該行記憶體位址等於和呼叫時傳入的對應引數記憶體位址」。

這點不要和(*)宣告符,(&)操作符混淆。

6樓:匿名使用者

1.一般來說*p=&a的表示方法是錯的,*p=a和p=&a是正確的。

2.*p=a的意思:將a的值賦給p指標指向的位址的值;

3.p=&a的意思是:將a的位址賦給指標p;

4.區別:*p是乙個值;p是乙個位址;兩者完全不相同。

5.*代表著p指向的位址的值,簡單來說就是取值;&是取位址符號,取的是位址;p是指標,可以理解為所指向的值的位址,*p就是取p指標指向的位址的值,&a就是取a的位址。

7樓:匿名使用者

*是解引用運算子 &是取位址運算子

8樓:小小小子

int *p=&a;

和int *p;pa=&a;等價

這裡的*是乙個指標說明符,不是間接定址運算子,我剛好看到這一點分享一下,前面幾個人都說這種是錯誤的,估計理解錯了吧

9樓:千古1帝劉公嗣

直接看**執行結果就

清楚了。

#include

int main()

10樓:匿名使用者

這個問題如下所述:

int b=5;a=10;// 定義變數a,並賦值為10;b=5

int *p=&b; //定義指標變數p,並且讓指標p指向變數b,其中 & 為

//取位址運算子

*p=a; //是將a的值就是10存放到指標p指向的變數b,這樣b的值不再是

// b=5,而是變成b=10

p=&a;// 這句是改變p 的指向,讓p指向變數a。例如還有下面的語句

*p=123; //那麼這樣後就會有p指向的變數的值為123.此處是a=123.

11樓:匿名使用者

& 取位址符 值相當與指標

* 取對應位址字元 型別與該位址所儲存的變數型別一樣

12樓:匿名使用者

*p=a是p取a值

而p=&a是取a 的記憶體位址

13樓:匿名使用者

第乙個&是指引用吧,*p=&a意思是p所指的值為a的引用

c語言中*p=&a和p=&a有什麼區別

14樓:非常可愛

c語言中*p=&a和p=&a只有乙個區別就是指標初始化時間不同。

p=&a:p是1維指標;

*p=&a:p是2維指標;

p=&a示例:

inta;

int*p;

a=5;

p=&a;

printf("valueis:%d.",*p);

擴充套件資料*p=&a的使用

int a, b, c;

int **p;

a = 5;

b = 6;

c = 7;

p = (int **)malloc(el_**t * sizeof(int *));

*p = &a;

*(p + 1) = &b;

*(p + 2) = &c;

for(int i = 0; i < el_**t; i++)printf("value is : %d\n", **(p + i));

15樓:育知同創教育

總得來說沒區別,就是指標初始化的時間不同而已int *p = &a;//這裡p宣告的時候直接初始化它的值為變數a的位址

int *p;//宣告指標p,p的值不確定可能指向任何位址,p = &a;//顯示初始化使p指向a的位址

16樓:匿名使用者

如果a都是基礎型別, 而不是指標, 比如a為int那麼 p=&a, 是把a的位址,賦值給p, p需要是int *型別。

而*p=&a 是把a的位址賦值給*p, p需要是int **型別。

注意 如果是int *p=&a;這種形式

是定義int *型別的p, 並給p初始化為&a。 等效於int *p;

p=&a;

還是給p賦值,而不是給*p賦值。

17樓:匿名使用者

1.一般來說*p=&a的表示方法是錯的,*p=a和p=&a是正確的。

2.*p=a的意思:將a的值賦給p指標指向的位址的值;

3.p=&a的意思是:將a的位址賦給指標p;

4.區別:*p是乙個值;p是乙個位址;兩者完全不相同。

5.*代表著p指向的位址的值,簡單來說就是取值;&是取位址符號,取的是位址;p是指標,可以理解為所指向的值的位址,*p就是取p指標指向的位址的值,&a就是取a的位址。

18樓:匿名使用者

對於指標來說,

*p = a[0],表示向位址為p的記憶體區域賦值為a[0]。

p = a[0],把

變數p的值改為a[0],這個語句正常應用中是錯誤的。變數p的值為記憶體位址,這樣賦值會丟掉p原來指向的記憶體。

正確給記憶體位址賦值應該使用第一句。

19樓:天雨下凡

這樣問說明你對指標的概念還不清楚,以下兩種方式等價:

一、先宣告指標,再給指標賦值

int *p,a;

p=&a;

二、定義指標的同時給它賦值

int a,*p=&a; //這裡的*p可以解釋成int * p,int *表示p是指向int型變數的指標

20樓:匿名使用者

#include

int main()

21樓:平野律子

舉個例子吧: a是乙個陣列,它在記憶體中的初始位址比如說是0x11111111(簡單假設),且a[0]的值是1,也就是說,記憶體0x11111111中儲存的值是1。 於是,&a[0]=0x11111111,a[0]=1。

int *p; p=&a[0]; 指標p會有乙個自己的記憶體位址,通常占用4個位元組(比如初始位址是0x22222222)。p的值是&a[0],也就是說從0x22222222開始,後面4個位元組中儲存的值是0x11111111。 *p的值就等於p所指向的記憶體位址中儲存的值,也就是a[0]。

所以*p等於1。 如果*p=&a[0]的話,很容易出問題。比如說int *p之後,p的初始值可能是0xcccccccc(debug版本)或者0x00000000(release版本)。

這個時候,如果你寫一句*p=&a[0]的話,將會把0xcccccccc或者0x00000000記憶體之後4個位元組的值變為0x11111111。 而0xcccccccc和0x00000000記憶體區通常是不可寫的,這樣就會報錯。採納哦

22樓:爵爺

在定義指標的同時讓指標指向某個位址 如int *p=&a;不能直接使用*p=&a; p=&a;代表的是讓p指向變數a的位址

23樓:百度使用者

*p=&a;是將a的位址賦值給*p,結果會是乙個十六進製制的數。 第二個是讓p指向a的位址空間。*p的傎和a相等。

int a=2,*p; *p=&a; 列印*p應該是乙個位址值,很長一串, p=&a; 打*p印結果會是2;

24樓:

有啊,*p是個指標,他儲存的是乙個變數的位址。你把a[0]裡的資料賦給他,是儲存在那個變數中,不是在存*p中。另乙個p是個變數,a[0]中的資料時存在p中

例如:int *p;

p=&b;

*p=a[0];

b==a[0] 值是放在b中

另乙個是放在p中 ,不同的

有定義:int *p,**q,x;如下有p=&x,q=&x,哪個正確?怎樣才是都正確的?

25樓:匿名使用者

p=&x正確,q=&x錯誤,q是二級指標,不能直接指向普通變數,而應該指向乙個指標變數,這麼寫就正確:q=&p;

int x,*p=&x則&*x和*&p分別表示什麼

26樓:金色潛鳥

&*x 和 *&p 都是錯誤的表達。

因為 int x; 沒有 *x 形式,只有求位址 &x 形式.

因為 int *p; 沒有 &p 形式,只有求指向的值 *p 形式.

可以 有 &*p, 可以 有 *&x. &*p 就是 p, *&x 就是 x.

例如:int x=8;

int *p=&x;

等同

設變數定義為「int x, *p=&x;」,則&*p相當於_____。 a、p b、*p c、x d、*&x

27樓:匿名使用者

選擇 a

因為*p是指

du針。當x的位址賦值

zhi個指標p的時候,他dao們的位址就一樣回(數值也是一樣)。

指標的話,要表示數值的答話用用*p,指位址的話,只要p就可以。

如果加位址符號&,那就值該指標的位址(&*p),也就是值x的位址。

abcd中,只有a選項表p的位址(即是x的位址)。

b、c和d都是錶值。

希望能幫助你!

PHP有哪些選擇運算子,各有什麼作用?

a選項,看下圖 不用全部記住,記住平時比較常用的就行了,還有記住 算術運算子 關係運算子 邏輯運算子 賦值運算子。php中的選擇運算子包括 1 三元運算子 它是一種簡便的條件表示式,可以根據條件的真假來執行不同的 它的語法為 expr1 expr2 expr3 如果expr1的值為 true,則整個...

布林運算子有哪些布林運算有三種,分別是什麼?

沒有布林運算子,只有布林表示式和布林值,所有值為真或假的表示式都稱為布林表示式,其值用0 或1表示.c語言的運算子可分為以下幾類 1.算術運算子 用於各類數值運算。包括加 減 乘 除 求餘 或稱模運算,自增 自減 共七種。2.關係運算子 用於比較運算。包括大於 小於 等於 大於等於 小於等於 和不等...

c語言中有關鍵詞9種控制語句34種運算子

這是輸出時要用到的格式。f表示輸出浮點數,與f之間是輸出浮點數的格式.1表示保留一位小數。1f表示輸出浮點數,並保留一位小數 在c語言中,i 1的原型就是i i 1,所以i 1相當於就是i i 1的簡寫。不管c語言結構 演算法是否複雜基本上都能看到這樣的簡寫,但是否要簡寫還是看個人的習慣。c語言中,...