怎麼理解C語言指標中a b,c語言中,指標問題! a b和a b,有什麼不同?a是指標

時間 2021-08-30 15:12:49

1樓:豬頭或火寶寶

你好!!!

首先我們已經知道:a,b,都是指標變數,*a表示指標變數所指向的值,同樣*b也是如此。*a=*b就是表示把指標b所指向的值賦值給指標變數a所指向的值。

但是要是指標a要是沒有初始化或是開闢空間的話,這樣賦值就有危險!!!

例如:int *a;

int *b=5;

*a=*b;

首先宣告一個指標變數a,但是系統並沒有為其分配空間,也就是說此時指標變數的值即地址不確定的,那麼*a也就表示一個不確定的值,有可能這個值是系統的重要資料,那麼*a=*b;不就修改了系統的資料了嗎???也就變數的危險了。

所以宣告指標變數的時候一定注意初始化。

2樓:就是佐

這個應該是 ab 指標指向的值的交換

if(*p1<*p2) { /*交換指標變數指向的整型變數*/ t=*p1; *p1=*p2; *p2=t;

就如在這段程式當中 如果(*p1<*p2) 則 交換

3樓:匿名使用者

“=”不是數學中數值的相等,而是說把指標b所指的內容賦予a

4樓:

b指向空間中的值賦給a指向的空間。

5樓:關東管領

這是指標a所指向的值的大小變為了b所指向的值的大小

6樓:彭珂的課堂

c語言_071_指標的定義和使用_上

c語言中,指標問題!*a=b和a=&b,有什麼不同?a是指標

7樓:匿名使用者

*a=b,是吧b的數值放到a指向的空間

a=&b,是把b的地址賦值給a

相同之處就是*a b的數值相同

不同回之處是答,上面的是數值賦值,那麼a指向的空間沒有改變而下面的賦值a指向的地址改變了,也就是a申請的記憶體空間中的數值變成了b的地址

8樓:匿名使用者

*a=b; 這個是把b的值賦值給指標a指向的空間

a=&b; 這個是把b的地址複製給指標a

9樓:匿名使用者

同意cpucash......

c語言指標中a=*b與*a=b區別

10樓:匿名使用者

a=*b把b指標指向的地址裡的值賦給a

*a=b,把a指標指向的地址裡的值用b的值替換

c語言中 a=b==c怎麼理解

11樓:非常可愛

“=”是賦值符,把c的值賦給b賦給a,最後a、b、c的值都相等,“==”是判斷符;

=賦值==等於運算說a=b=c,表示式執行a值賦給b、c執行完abc值相等;

a=b==c,複合表示式先a值賦給b與c比較相等則返0,否則返非零值;

運算b==c,若b與c相等,那麼得出的值為1。

擴充套件資料

c語言中a=b--<=a||ab!=c的計算

左邊:(a=b--)<=a;

計算b--的值,b--的值為2,得到這個值也就讓b的值變成了1,賦值給a後a的值為2,(a=b--)的值也就是a的值為2,2<=2成立,所以左邊為真;

右邊:(a+b)!=c,a+b的值為3,c的值為3,所以右邊為假真||假的結果為真;

b--使b的值變成了1;

a=b--的賦值使a的值變成了2;

12樓:匿名使用者

int a = 1, b = 2, c = 3;

a = b = c 意思是將 c 的值賦給 b,再賦給 a,a,b,c 都等於3。

a = b == c, = 的優先順序低於 ==,會先判斷 b == c 結果為假,就是0值,然後將0值賦給 a,也就是執行後,a = 0, b = 2, c = 3。

a == (b=c),會先講 c 值賦給 b, 然後判斷 a 是否等於 b,表示式得到一個0值(a不等於b),但該判斷不會影響 a 的值,結果 a = 1, b = 3, c = 3。

a == (b == c) 會先判斷 b是否等於c,結果為0,再判斷 a 是否等於 0,結果也是0。但該判斷不影響a,b,c的值。還是 a = 1, b = 2, c = 3.

13樓:安徽新華電腦

涉及到一個誰先把值賦給誰的區別。其他沒啥區別。

c語言中指標變數怎麼理解?怎麼用?

14樓:

指標變數是一個變數,它儲存的是另一個變數的記憶體地址。你如果知道了這個指標變數儲存的值,就可以知道它所指向變數的記憶體地址,於是就可以間接訪問到那一個變數。

定義:指標變數型別 *指標變數名1, *指標變數名2, ... ;

例如:int main(void)

把指標作為函式的引數傳遞,可以使函式可以訪問函式外部的變數,例如:

void swap(int *a, int *b)指標也可以用於傳遞陣列,陣列名本身就是一個指標:

void func(int a, int n)指標還可以指向指標,指向結構體(struct),指向陣列int **p; /*指向int指標*/struct *** *p;

int (*p)[100]; /*指向一個int[100]陣列,括號不可少*/

15樓:申覓荷

指標變數是一個存地址的變數,賦值是隻能傳地址(跟int型只能賦值整型一樣的)

16樓:顏海鏡

不知道你會不會彙編指標其實就是暫存器間接定址

我覺的這樣解釋最直接容易理解,當然是要你會彙編的話,不懂的話,指標其實是個變數只不過這個變數的值是地址

c語言中 char *a,*b; a=b ; 這個a=b 意思是讓指標a指向b還是什麼意思?

17樓:匿名使用者

將指標變數b的值賦值給a,結果就是a和b指向同一地址

18樓:韓濤董青

a指向b所指的地方 即ab指向了同一個地方

19樓:匿名使用者

a和b指向記憶體裡同一個區域。

c語言中 *b=&a什麼意思 *b和&a分別是什麼含義啊?

20樓:秋楓

*b=&a這種寫法只有在定義時這麼寫才對,例如 int *b;*b=&a;是錯誤的,正確的是int a=1;int *b=&a;意思是說定義一個指標b,b裡存的是a這個變數的地址。如果定義好了一個這真b,那麼*b就指b這個變數裡存的地址裡的值(有點繞口,慢慢理解),&為取地址符,&a就是a這個變數的地址。

21樓:匿名使用者

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

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

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

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

22樓:餡嘍嘍嘍

(a>b)?a:b

表示如果a>b為真,則取

問號後邊的第一個值,這裡是a

如果a>b不為真,則取問號後邊的第二個值,這裡是b

《表示式1>?《表示式2>:《表示式3>; "?

"運算子的含義是: 先求表示式1的值, 如果為真, 則執行表示式2,並返回表示式2的結果 ; 如果表示式1的值為假, 則執行表示式3 ,並返回表示式3的結果。

若a-b非零值(即a-b邏輯值為1)則輸出a值;若a-b為零值(即a-b邏輯值為0),則輸出b值。

/  代表的是 除法。如果 a 和 b 都是整數,不是 float 等這種浮點數,所以結果只保留整數,所以  a/b 算出來是整數。

另外,% 代表的是取餘數,即: 5%3 等於 1 餘 2,結果就是 2

23樓:黑夜巫女

b是一個指標變數,*b = &a是b裡存的是變數a的地址

C語言指標,c語言指標詳解

結果肯定是a撒。你在函式point char p 呼叫後沒有返回 p的值 原因是你的函式就沒有return 語句,且 形參的值不能傳遞給實參 在point函式中改變的只是指標的值,指標指向的內容不受影響。可以這樣修改一下 void point char p 不知。樓上說的。你懂了沒。就是p 3 這句...

c語言指標怎麼指向結構陣列,c語言 指標怎麼指向乙個結構陣列?

黃邦勇帥哥哥 樓上都回答得這麼複雜嗎?我寫簡單一點的 struct str void main 宣告乙個結構陣列並對陣列a 0 中的成員n和s分別賦值為1和2,對a 1 中的成員設定為3和4。注 有些編譯器可能不需要最前面的struct來宣告結構物件。struct str p a 宣告乙個結構指標,...

C語言,指標問題,C語言,指標問題

指標的概念 指標是乙個特殊的變數,它裡面儲存的數值被解釋成為記憶體裡的乙個位址。要搞清乙個指標需要搞清指標的四方面的內容 指標的型別,指標所指向的 型別,指標的值或者叫指標所指向的記憶體區,還有指標本身所佔據的記憶體區。讓我們分別說明。先宣告幾個指標放著做例子 例一 1 int ptr 2 char...