C語言中pa與pa有什麼區別

2021-03-19 18:20:31 字數 5538 閱讀 7637

1樓:gta小雞

*p=a[0],令p所指向地址的內容等於a[0],p是一個一級指標;

*p=&a[0],令p所指向地址的內容等於a[0]的地址,p是一個二級指標。

c語言中*p=a[0]與p=a[0]有什麼區別?

2樓:匿名使用者

對於指標來說,

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

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

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

3樓:匿名使用者

這個是指標和變數的區別:

第一個表示變數p存的是陣列a的地址值,即表示指向陣列a

第二個表示p和陣列a的第一個元素的值一樣。

4樓:

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

例如:int *p;

p=&b;

*p=a[0];

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

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

5樓:

都是賦值語句,p的資料型別不同,被賦值的對像不同而已

*p=a[0] ==>賦值對像不是變數p本身,而是它所指向的對像

p=a[0] ==>賦值的對像就是變數p本身

*p=&a[0] 和p=&a[0]有什麼區別

6樓:匿名使用者

舉個例子吧:

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記憶體區通常是不可寫的,這樣就會報錯。

7樓:匿名使用者

*p=a[0] //將 a[0]的值賦給到p所指向的位置。

p=&a[0] //將 a[0]的地址賦給p則,如果:

int a[10];

int *p;

*p=a[0]; //1

p=&a[0]; //2

2句恆正確,1句則有可能引發記憶體非法訪問錯誤。

c語言陣列中*p=a,與p=&a[0],有什麼區別?跪求!!!

8樓:呆小魚

如果a是陣列,那麼沒區別,都指向陣列第一個元素

9樓:爭議什麼

一個指向了a陣列的地址,一個指向了a[0] 的地址。

#include

void main()

for(i=0;i<5;i++)

printf("\n");}或

#include

void main()

for(i=0;i<5;i++)

printf("\n");}

10樓:匿名使用者

p=&a[0] 等價 p=a;

就是問 *p=a與p=a的區別

*p=a 把a的值送入 p指向的單元;

p=a 把a的值送入 單元 p區別就是 單元與指向的單元是不同的

11樓:匿名使用者

*p=a指將陣列的地址存入地址p的位置,即要知道a陣列地址,請到*p位置找

p=&a[0]為將地址p指向陣列a[0]的地址上

12樓:羊歡

第一個指標p指向a的地址,第二個p指的是陣列a第一個數

13樓:匿名使用者

是一樣的, 沒有區別

在c語言中,表示式:*p=a[0]與p=a[0]有什麼區別?

14樓:匿名使用者

對於指標來說,

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

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

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

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

15樓:沉睡的羅羅塔

*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原來指向的記憶體。

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

16樓:非常可愛

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

17樓:育知同創教育

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

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

18樓:匿名使用者

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

19樓:匿名使用者

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

20樓:匿名使用者

對於指標來說,

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

p = a[0],把

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

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

21樓:天雨下凡

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

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

int *p,a;

p=&a;

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

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

22樓:匿名使用者

#include

int main()

23樓:平野律子

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

24樓:爵爺

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

25樓:百度使用者

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

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

26樓:

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

例如:int *p;

p=&b;

*p=a[0];

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

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

c語言中與的區別,c語言中「 」與「 」有什麼區別?

c語言中 與 的區別如下 是否為單行註釋 是用於多種語言的單行註釋語句。是註釋語句,不限制行數,在 和 之間的即為註釋。實用性的區別 是用於多種語言的單行註釋語句,適用方便快捷,但是實用性不如多行註釋 是註釋語句,不限制行數,在 和 之間的即為註釋,實用性大,但是符號鍵盤敲打麻煩。程式編譯時,不對註...

c語言中a與a有什麼區別,C語言中a與a的區別是什麼?詳細一點,謝謝!

這要看a是什麼了,如果a是指標變數,那麼a代表這個指標變數,a代表這個指標變數所指向的目標。如果不是指標那麼 a不是正確的寫法。c語言中a 與 a的區別是什麼?詳細一點,謝謝!a 是先返回a的值,再執行 運算。a 是先執行 運算,在返回a的值。例如 include int main a 7a 先使用...

c語言中p與P有什麼區別,c語言中p5與P5有什麼區別?

舉例說明,include int main int a 5 b int m a a範圍內的空間按照 int大小來取值 for i 0 i 5 i return 0 輸出結果為 1 2 3 4 5 其中 int a 5 表示在棧中產生一個大小為 5個int的空間 a代表的的是整個空間的首地址 int ...