C指標問題 int a 12,p a如何解釋?跟p a有什麼區別

2021-03-11 10:40:18 字數 6376 閱讀 4661

1樓:匿名使用者

定義的時:bai int a=12,int *p=&a; (編譯器首先在

du記憶體裡開闢了一個空間,zhi並dao

把a的地址放進去)

這在c語言中

內叫做容「初始化」——在定義的時候給予一個初始的值;

如果沒有進行初始化,定義成,int a,*p; 則編譯器會給一個值,一般為0或空值。

對於,int *p; p=&a; (編譯器首先在記憶體裡給p分配一個空間,然後給它賦值,一般賦0x00000000,然後再把a的地址取出,放到p中)比直接初始化,多了一個賦值。用起來效果一樣。

2樓:孤鬆獨海

可以分解為

int a=12;

int *p = &a;

上面最開始一下定義兩個變數 a 與p 指標然後將a的地址&a 賦給p指標

3樓:

估計這裡*p是指標的指標吧,就是定義的時候應該是int **p.

4樓:廣東糖

在p前面加個「*」是定義p為一個指標,你影響中的那個應該是這樣定義了:int a=12,int *p=0;p=&a;其實兩者都一樣的,只是方便了一點點

5樓:

其實是 inta=12;int *p=&a;

不能是int p=&a;

6樓:匿名使用者

p的定義如果是 int **p,

即p是指向指標的指標(指標的地址),*p就是臨時變數a的地專址,**p=12

p的定義如果

屬是 int *p ,即p是指向整形變數的地址,p就是臨時變數a的地址,*p=12.

&a就是地址,地址就是指標。

c語言中,定義int型變數a指標*p,那麼,*p=&a和p=&a是什麼區別?

7樓:匿名使用者

只能int *p=&a或者int *p;p=&a;

8樓:匿名使用者

定義int型別變數a和指標*p,則指標p存的是一個int型變數的地址,即可以表達為:p = &a;

*p存的是int型變數的指,即p指標指向地址的內容,所以可*p = a; 當你用*p = &a時,編譯器會認為指標的值表示了地址,編譯報錯。如果你真想這樣表示,也可以,只需要將地址強轉為int型,即

*p = (int)&a;

9樓:天河宙

你要先int *p然後才能p=&a

10樓:匿名使用者

p是地址 &a是地址,*p是p地址對應的值

11樓:白花戀歌

去看 c和指標 這本書,有非常詳細的關於指標的幾乎所有的問題,&a表示取變數a的地址,根據宣告,*p表示訪問指標所得到的整形變數,一般情況下地址不能賦值給整形變數,如果非要這麼做,只能使用強制型別轉換

12樓:匿名使用者

*p 是錯的。。。。

在c語言中,int *p,a; *p=&a,和p=&a有什麼區別?

13樓:天雨下凡

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

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

int *p,a;

p=&a;

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

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

14樓:匿名使用者

#include

int main()

{int *p,a=0xaa; //宣告 int指標

c語言超級簡單指標問題 int a,*p; 那麼請問【 p=&a 】和【 *p=&a 】有什麼區別?

15樓:天雨下凡

以下兩段**等價:

一、int a,*p;

p=&a; //給指標賦值

二、int a,*p=&a; //宣告指標的時候進行初始化

16樓:

若有int a,*p;,則p=&a;是把變數a的地址賦給指標變數p,而*p=&a;是錯誤表示式,編譯都過不了……

c語言指標,int a=1; int *p; 其中p=&a和*p=&a有什麼區別?p的值是否相同?

17樓:匿名使用者

指標本質就是儲存記憶體地址的一個變數。所以指標可以指向某個變數在記憶體中儲存的單元格嘛。變數去訪問單元格最後也是編譯器通過變數名和地址一一對應去查詢的。

而指標裡面直接儲存的就是地址,所以直接可以訪問地址所對應的單元格。

不知道樓主說的是說明情況。所以幾種可能的都說一下:

測試**

#include "stdio.h"

#include "conio.h"

main()

int *p=&a ; 這是很標準的,把a的地址個p指標變數。

int *q;q=&a;這也是很標準的。定義一個指標變數,然後將a的地址賦值給她。

int *r; *r=&a; 首先r是個指標變數,但是r指向記憶體中那個單元格呢?r沒有賦初值就開始用了。這是很嚴重的。

r是個遊離態的指標。 *r表示取出r對應的那個地址中的值。r都沒有指向一個具體的單元格,如何去取值啊。

18樓:冰水清清藍

int *p中其一般形式為:

型別說明符 *變數名;

其中,*表示這是一個指標變數,變數名即為定義的指標變數名,型別說明符表示本指標變數所指向的變數的資料型別。

例如: int *p1;

表示p1是一個指標變數,它的值是某個整型變數的地址。或者說p1指向一個整型變數。至於p1究竟指向哪一個整型變數,應由向p1賦予的地址來決定。

p就是地址。*p是一個指標型變數 *p=&a錯誤

19樓:匿名使用者

p=&a 是將變數a的地址賦給指標p本身的儲存單元

*p=&a 是將a的地址賦給指標p所指向的記憶體單元

第二種由於沒有對指標初始化,*p不知道指向什麼單元(有可能是重要的系統單元),所以這樣的操作很危險。

20樓:十面埋伏炸

不相同,p是指該指標的地址,向它賦值是將p指向另一個地址,而*p是指向p地址的指標,它是可以直接賦值的。希望可以幫助你~~~

21樓:好好學技術

p=&a,表示p指向a ,所以p的值為1

*p=&a,是把a的地址的值給*p,p值是不同的

c語言裡面指標,*p=&a和p=&a,有什麼區別

22樓:匿名使用者

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

23樓:匿名使用者

第一個p是指標的指標,第二個p是指標。

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

24樓:非常可愛

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

25樓:育知同創教育

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

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

26樓:匿名使用者

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

27樓:匿名使用者

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

28樓:匿名使用者

對於指標來說,

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

p = a[0],把

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

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

29樓:天雨下凡

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

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

int *p,a;

p=&a;

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

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

30樓:匿名使用者

#include

int main()

31樓:平野律子

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

32樓:爵爺

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

33樓:百度使用者

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

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

34樓:

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

例如:int *p;

p=&b;

*p=a[0];

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

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

c語言指標符號問題,C語言指標符號問題?

當你想儲存一個地抄址的時候不加 int a 0 p a 當你想取指標裡的值 的時候加 int b b p b a b 0 就是說把a地址儲存的值取出來。當 p的值還是指標的時候 int p null int q null int a 0,b 1 q a p q p a 結果就是q 指向a p指向q ...

C語言p和p的區別c語言的指標部分p與p的區別是什麼?

c語言中,p 和p都常用在指標當中表示一個指標變數,p 和p的區別 1 表示的含義不同 p表示此指標指向的記憶體地址中存放的內容。p表示一個指標變數的名字,指此指標變數所指向的記憶體地址。2 輸出的格式不同 p一般是一個和指標型別一致的變數或者常量。p輸出的是一個16進位制數,輸出一個指標的地址。3...

c裡的p和p有什麼區別p是指標

p是取得指標p所在的地址的值,而 p是取指標p所在的地址 c 的指標變數中,p與p有什麼區別?include void main 程式輸出屬結果 p 5 p 0x0012ff7c press any key to continue p指向的是地址,是解除操作符,加在p前面是為了獲取儲存在這個地址的值...