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 ...