有關c語言中指標的一些理解問題,不懂C語言關於指標中的指標的問題,有通俗易懂的解釋嗎

時間 2022-02-01 18:09:47

1樓:捐你妹

首先,你的基本理解都是正確的。指標本身也是一個變數。

那麼就是你說的五個等式的含義了。

首先是*b = &a;

這個需要分情況的。如果是int* b = &a;那麼就是表示b是指向a的指標。但如果沒有前面的int。*b = &a;那麼就是表示b指向a的地址。也就是說是指標的指標。

然後是b = &a;這個就是b的值是a的地址,也就是b是指向a的指標。

b = a;這個一般是非法的。他的含義是將b的值賦值為a的值。對於寬鬆一點的編譯器這個可能可以通過,但是執行結果就是不可預知的了。

因為地址也是一個整數,這麼做確實從資料上是可以的。但是a的值是不可預見的,那麼當做*b的時候,指向的值就不可知了。

*b = a;這個是表示將b指向的值賦值為a。

*(int*)100=25這個就類似於b = a的情況。首先它將100強制轉換成一個int指標。也就是說將100當作地址。

然後再對這個地址取值,並將這個值賦值為25。除非你很明確你在做什麼,否則這種寫法都是不應當的。

2樓:帥氣的莉大爺

如果*b=&a,表示指標b存的是a的地址,*b=a表示指標b存的是a的值

3樓:

你前面的理解都是對的。

1、從這個開始:int *b=&a,這個宣告,這個是宣告並且初始化語句,初始化就是賦值,這個宣告是宣告一個指標,那麼賦值就是給指標賦值,所以這裡的賦值就是將變數a的地址賦值給指標b;

2、b=&a是合法的;int *b=&a可以拆開來,即{int *b; b=&a;}

3、*(int*)100=25;(int*)表示將常量100強制轉化成int指標型別;*(int*)100合起來的意思就是取地址為100的記憶體空間裡面的數值;整個語句就是將記憶體地址為100的地方賦值為25.

不懂c語言關於指標中的指標的問題,有通俗易懂的解釋嗎

4樓:匿名使用者

這兩個好像都不行吧,第一個多了一層

指標,第二個少了一層指標

首先你要明白指標的作用,他只是作為一個代號來使用,就如同一個人的綽號一樣,或者是如門牌號

c中,每一個變數都有一個記憶體空間來儲存他的資料,二這個記憶體空間是有一個地址來標示的,知道這個地址,就可以對這個變數進行操作,編輯器也是這麼幹的,編譯成exe後,是沒有變數名的存在的,只有地址來標示

一般的變數,對應的地址中儲存資料,而指標變數的地址空間中儲存的資料是一個地址的標示

如一般的變數,int a=5;那麼a這個變數空間中的資料時5,假如a變數在記憶體中的地址0000 1010

那麼給予int *p=&a;的話,那麼p變數的記憶體空間中儲存的資料就是0000 1010這個資料,也就是一個地址,但p變數申請的記憶體空間可能是0000 1016,也就是說記憶體空間中00001016這個地址中儲存的資料時0000 1010,二記憶體空間0000 1010這個地址中儲存的資料時5

訪問p就是訪問p的記憶體空間00001016,訪問*p就是訪問p指向的空間0000 1010

這樣應該明白記憶體空間和資料之間的關係以及指標的作用了吧

接著說你的程式,其實就是一個子函式引數的問題

子函式有幾個特性

1、只能返回一個資料,多個返回只能用全域性變數或者指標(陣列名也是指標)

2、實參和形參不在衣蛾地址空間中,除非用&取地址(這是一個指標的用法)

你的程式,返回兩個資料,並且不用全域性變數,那麼只能用指標

程式只能有一種void swap(int *a,int *b)

別的方式都不對

這是交換ab指標指向的空間中的內容,而不是ab指標本身

道理是不在同一個記憶體空間中,交換指標本身不能影響到主函式的資料

用這個&也是一樣的道理

5樓:匿名使用者

c語言中函式的引數傳遞都是傳遞值的。

假設swap函式你是這樣寫得

swap(int a,int b)

。這函式內部a和b的值確實是改變了,但是在main中的a和b不會改變的。

你寫得第二個程式應該編譯都不會通過。temp是一個整型值,而a是一個整型指標,兩者之間無法賦值。

6樓:adore_喬布斯

思維混亂 整形變數去存指標地址? 你也沒搞清楚區域性變數的含義。

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

豬頭或火寶寶 你好!首先我們已經知道 a,b,都是指標變數,a表示指標變數所指向的值,同樣 b也是如此。a b就是表示把指標b所指向的值賦值給指標變數a所指向的值。但是要是指標a要是沒有初始化或是開闢空間的話,這樣賦值就有危險!例如 int a int b 5 a b 首先宣告一個指標變數a,但是系...

關於c語言中指標賦值的問題,關於C語言中指標賦值的問題

計算天下 你這樣想說明你還沒有真正理解記憶體和指標。int a 表示編譯器隨機取出一個空閒的地址分配給a,不妨設為00000000,長度為sizeof int 不同編譯器可能不同。int p 也表示隨機取出一個空閒的地址分配給p,不妨設為000000f0,長度一般為4個位元組,則這四個位元組現在儲存...

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

指標變數是一個變數,它儲存的是另一個變數的記憶體地址。你如果知道了這個指標變數儲存的值,就可以知道它所指向變數的記憶體地址,於是就可以間接訪問到那一個變數。定義 指標變數型別 指標變數名1,指標變數名2,例如 int main void 把指標作為函式的引數傳遞,可以使函式可以訪問函式外部的變數,例...