int a b與int a b有什麼不同

2021-03-22 00:47:07 字數 4133 閱讀 6981

1樓:匿名使用者

這是典型的c語言指標題

int *a表示定義了一個int型的指標

*a=b表示指標a指向b,即把b賦值給*a;

&是取地址符,&b代表b在記憶體中的地址,*a=&b表示把b的地址賦值給*a。

利用編譯器編譯該**:

結果為:

拓展資料

*和&運算

(*p)操作是這樣一種運算,返回p 的值作為地址的那個空間的取值。(&p)則是這樣一種運算,返回當時宣告p 時開闢的地址。顯然可以用賦值語句對記憶體地址賦值。

我們假設有這麼兩段記憶體地址空間,他們取值如下:(單位:h,16 進位制)

假設有這麼一段**:(假設開闢空間時p 被分配給了3001h、3002h 兩個位置)

int *p;

p=2003h;

*p=3000h

**p的值為多少?

**p=*(*(p))=*(*(2003h))=*(3000h)=3000h。

那麼&&p、*(&p)和&(*p)又等於多少?

&&p=&(&(p))=&(3001h),此時出錯了,3001h 是個常數怎麼可能有地址呢?

*&p=*(&(p))=*(3001h)=2003h,也就是*&p=p。

2樓:南北

*a=b表示a指標所指向的資料,等於b。*a=&b表示a指標所指向的資料,等於b的地址。

1、int *a=b是說把b的值賦值給指標a(*a), int*a=&b是說讓指標a(*a)指向b的地址。 舉個例子說: int b=5,c=9。

2、int *a1=b;----------------------1。

4、b=c;-------------------------3 這個時候*a1=5,*a2=9 。因為在說第一步時已經把b的值,也就是5傳給*a1,所以*a1=5 。在第二步時,把b的地址,也即是&b傳給了*a2,這個時候*a2=5。

5、但是在第三步時,b的值變成了c的值,也就是9,我們知道這個時候 b的地址早就傳給*a2了,所以,*a2和這個時候的b的值是一樣的, 即*a2=9。

3樓:匿名使用者

int *a=b是說把b的值賦值給指標a(*a), int*a=&b是說讓指標a(*a)指向b的地址。

舉個例子說:

int b=5,c=9

這個時候*a1=5,*a2=9 。因為在說第一步時已經把b的值,也就是5傳給*a1,所以*a1=5 。在第二步時,把b的地址,也即是&b傳給了*a2,這個時候*a2=5 。

但是在第三步時,b的值變成了c的值,也就是9,我們知道這個時候 b的地址早就傳給*a2了,所以,*a2和這個時候的b的值是一樣的, 即*a2=9。

4樓:一口沒水的枯井

1 答案

不同點在於a的值不一樣

2 關於指標

在32位機器裡,指標型別為4個位元組,一般用16進位制的形式來表示3 分析

int*a;表示a被宣告為int型指標型別(1)在int *a=b;裡

若b是整數12,則 a的值為 0x0000000c在c語言中 int*a=b;是報錯的,需要強制轉換才行 int*a=(int*)b

(2)在int *a=&b;裡

表示把b的地址賦給a,加入b的地址是 0xff00ff00則a的值也為0xff00ff00

當然,在每次程式執行時,b被分配的地址是隨機的,所以不一定是0xff00ff00

4 用一個小示例驗證

#include

int main()

5 執行結果

5樓:oo怨念

int *a=b

這種寫法是錯的,你不能用一個int型的變數去初始化一個int*型別的變數。

6樓:匿名使用者

int *a=b;

宣告一個int *型指標變數a,並將其值初始化為b的值,這裡b應該也是個int *型指標變數

int *a=&b;

宣告一個int *型指標變數a,並將其值初始化為變數b的地址值,這裡b應該是個int型變數

7樓:火狐狸

我是學習計算機的,我來說吧

int *a=b是說把b的值賦值給指標a(*a),int*a=&b是說讓指標a(*a)指向b的地址。

舉個例子說,

int b=5,c=9

這個時候*a1=5,*a2=9

因為在說第一步時已經把b的值,也就是5傳給*a1,所以*a1=5在第二步時,把b的地址,也即是&b傳給了*a2,這個時候*a2=5但是在第三步時,b的值變成了c的值,也就是9,我們知道這個時候b的地址早就傳給*a2了,所以,*a2和這個時候的b的值是一樣的,即*a2=9。

謝謝把分給我。

8樓:匿名使用者

簡單:int *a=c;定義指標a並賦初值c;

相當於int *a;//定義指標變數a

a=c; //給a賦值c

所以int *a=b;初值為b

int *a;

a=b;

int *a=&b;初值為b的地址

int *a;

a=&b;

對指標的操作要慎重,最好定義的時候賦初值,使用的時候判斷有效性

9樓:戲水兒

int *a=b

int*a=&b

這兩個a都是int*型別的指標,第一句是a=b,b應該也是一個指標,第二句是將b這個變數儲存的地址賦值給了a。

10樓:匿名使用者

int *a=b 將變數b的值賦給*a

int*a=&b 使a指向b

a&=b這是什麼意思啊?

11樓:關鍵他是我孫子

a&=b表示的是:在c語言程式引用的時候,只能在定義的時候被賦值。

例如:int b = 1;

int a & = b;

這個定義的意思就是給b取了一個別名叫a,所有對b的操作都是直接作用於a。

a&=b 即 a=a&b  其中&為位與運算。

12樓:匿名使用者

說明b是一個指標變數,其定義應該是這樣:int *b,a;

*是取值運算子,*b就是取b指向儲存空間的值;

&是取地址運算子,&a表示取變數a的地址。

*運算子後面應該跟指標;而&後面應該跟變數名(或陣列元素,或結構體變數.成員名)。

例如 int *b;*b=&a;是錯誤的,正確的是int a=1;int *b=&a;意思是說定義一個指標b,b裡存的是a這個變數的地址。如果定義好了一個這真b,那麼*b就指b這個變數裡存的地址裡的值,&為取地址符,&a就是a這個變數的地址。

int a = 5;這是c語言中建立變數的語句,它記憶體中隨機的一個地址上放了一個數5,我們怎麼使用它呢,就是用字元a代表它。

int* b = &a;這是c語言中賦值地址的語句,其中int* 表示建立一個為b的整型地址變數,它所代表的就是某個整型資料的地址。

&a,這是取地址的語句,從上面可以知道,a代表的是5,可是a不是地址,那麼a的地址該怎麼表示呢,在a的前面加上字元&,也就是&a表示的是a的地址。

13樓:陽光上的橋

如果要解釋a&=b,那麼答案就是a=a&b,不過這個你知道了。

那麼,可能是你是不明白a&b的含義吧,否則還提什麼問呢:)a&b就是把a和b的二進位制形式每一位數進行"與"運算,假如a為3、b的值為7,你知道a&b結果為多少嗎,3&7的結果是3,知道怎麼算的嗎:

3的二進位制是11,7的二進位制是111,按位與的結果為3。

是不是很簡單,你知道3&5的結果嗎,標準答案是1,想明白了就好。

現在應該知道a&b的結果是整數型別,不是什麼0呀1的、真呀假的。

c語言,int a,b和int a int b有什麼不同

int a,b 和 int a int b 是一樣的。作用域的話你應該考慮這個變數是全域性變數還是區域性變數。比如下面這段程式,a和b的作用域就是main函式,而c的作用域就是add函式,只有當執行add函式時才從系統內申請記憶體給c然後c只在add函式內有效,當add函式執行完後就會釋放c的記憶體...

墨翠與墨玉有什麼不同翱墨翠與墨玉有什麼不同啊?

1 墨翠與墨玉的性質不同。1 墨翠是一種翡翠。墨即是黑,翠則綠色,墨翠即指綠得呈黑,黑裡又透著綠顏色的翡翠。2 墨玉,指的是新疆和田玉中的一個名貴品種,它具備和田玉的優秀品質,堅緻溫潤,其中純漆黑如墨者,其漆黑如墨,色重質膩,紋理細緻,光潔典雅。墨玉是一種珍貴而稀有的自然資源,其色重質膩,紋理細緻,...

無紡布與不織布有什麼區別,土工布與無紡布有什麼區別

無紡布和不織布是指的一種東西,只不過是同一件物品的不同叫法而已。無紡布是通俗的叫法,基本絕大部分人都會這麼叫。不織布一般在手工藝製做上習慣叫這麼名字。無紡布也叫非織造布,也叫不織布,都是值得一種東西。無紡布的確切名稱應是非織造布,或叫不織布。因為它是一種不需要紡紗織布而形成的織物,只是將紡織短纖維或...