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 把指標作為函式的引數傳遞,可以使函式可以訪問函式外部的變數,例...