c裡面pa和pa有什麼區別

2021-03-03 20:39:08 字數 6130 閱讀 8321

1樓:

當然有區別。一般情況下,*p=&a說明p是二級指標,而p=&a說明p是一級指標。

c++,請問*p=&a與p=&a(p是指標)有什麼區別

2樓:匿名使用者

p=&a容易理解,就是把變數a的地址存在指標p。*p=&a是把變數a的地址存放在指標p所指向的記憶體單元

3樓:匿名使用者

打個比方

int a = 1000;

int * p;

假設a存放於記憶體中的22222這個地址,那麼*p=&a相當於i=22222,而p=&a相當於使p指標指向a

4樓:匿名使用者

第一個是p指向的記憶體單元存上a的地址,第二句是p的值是a的地址

*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樓:清鵬之

讓我來綜合一下吧

在定義的時候

int *p=&a; 是等同於 int=*p;   p=&a;的。該形式只在定義的時候是正確的。就是指標p所指向地址的內容為a的內容。

如果不是定義的時候

*p=&a; 就是它字元的那個意思,就是指標p所指向地址的內容為a的地址。

dev c++試了下

————————————————————————————————————

「*p」表示地址為p儲存單元的內容;「p」表示地址;「&a」表示取a的地址;a為變數。

int *p;//初始化指標,但是該指標無指向地址!如果直接使用會有問題。

int *p=&a;//初始化指標,該形式只在定義時正確,表示以p指標所指向地址的值為變數a的值。

p=&a;//表示指標p所指向的地址就是a的地址。即地址間的賦值。

*p=a;//表示指標p所指向地址的內容就是內容a。

在c中,指標一定要初始化,指標加1指的是增加一個儲存單元。對陣列而言,這意味著把加1後的地址是下一個元素的地址,而不是下一個位元組的地址,這是為什麼必須宣告指標所指向物件型別的原因之一。

15樓:匿名使用者

首先來說一下*和&,為了便於理解你可以認為,這裡*是取內容,&是取地址。

我不討論它們的區別,因為*p=&a這個形式一般是錯的,常用的是p=&a。

下面比較*p=a和p=&a。看圖,圖很詳細。

顯然它們是等價的。

然後比較*p=&a和p=&a;

則這兩種都是對指標變數的賦值,賦值有兩種形式

①先定義後賦值

int a=3,*p;(定義指標變數*p)

p=&a;(對指標變數取地址)

②定義變數的同時賦值

int a=3,*p=&a

也就是說在賦值時,

int *p=&a

相當於int *p,

p=&a

它們的區別其實就是

int *p=&a是同時定義*p並對賦值p(即a的地址賦給p),而p=&a,只是對p賦值,沒有定義指標變數。

但要注意,只有在同時定義賦值時「*p=&a」這種寫法才是對的

其他情況下不要用*p=&a,這種形式,因為根本就不對,如下圖。我之前一直的疑問是為什麼賦值時*p=&a就不算錯了?後來老師給的解釋是這種形式只有在上面那種情況下成立,其他的情況確實都是錯的。

16樓:沉睡的羅羅塔

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

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

對於指標來說,

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

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

17樓:幻想祕境

*p=a是將a的值給p指標指向的地址的值

*p=&a是將a的地址給p指標指向的地址的值

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

18樓:非常可愛

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));

19樓:育知同創教育

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

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

20樓:匿名使用者

如果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賦值。

21樓:匿名使用者

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的地址。

22樓:匿名使用者

對於指標來說,

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

p = a[0],把

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

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

23樓:天雨下凡

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

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

int *p,a;

p=&a;

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

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

24樓:匿名使用者

#include

int main()

25樓:平野律子

舉個例子吧: 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記憶體區通常是不可寫的,這樣就會報錯。採納哦

26樓:爵爺

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

27樓:百度使用者

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

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

c語言中pa那麼p與a的區別是什麼

a和p是變數,a和 p是表示式,1和0x1000是常量a和 p表示的都是整形左值,p和 a表示的都是指標型左值,1和0x1000表示整形和指標型右值。左右值的概念不清的話,google一下 在記憶體中,a和p有儲存空間空間,a存放著1,p存放著0x1000,p和 a沒有空間,他們的運算結果是在暫存器...

pa203和p203軸承座區別,uclf203軸承與ucfl203有什麼區別

p 立式座 pa 暗孔座 外球面軸承座按形狀分為立式座 p座 方形座 f座 菱形座 fl座 圓形座 c座 凸臺圓形座 fc座 凸臺方形座 fs座 暗孔座 pa座 吊式座 fa座 uclf203軸承與ucfl203有什麼區別 安裝孔,和中心高都不一樣的 軸承座不一樣吧,好像是的 求一個標準件的軸承座 ...

c裡面類名後面跟和是什麼意思,有什麼區別

表示引用 表示指標 單繼承的定義格式如下 class 派生類名 繼承方式 基類名 繼承方式 常使用如下三種關鍵字給予表示 public 表示公有基類 private 表示私有基類 protected 表示保護基類 表示指標 表示取地址符 定義的class a這個類的物件mylnstance 的值是空...