1樓:匿名使用者
指標實質上是bai乙個整數,代表的是du一zhi個記憶體位址。
例如,有100個凳dao子擺成一排。第
專15個凳子上屬坐著張三,第2個座位上擺著乙個紙條,上面寫著「第15個座位上的人」。
那麼,第15個凳子上的張三就是乙個值,第二個座位上的紙條就是乙個指標。你可以直接找到張三,也可以循著第二個座位上的紙條找到張三。
不懂c語言關於指標中的指標的問題,有通俗易懂的解釋嗎
2樓:匿名使用者
這兩個好像都不行吧,第乙個多了一層
指標,第二個少了一層指標
首先你要明白指標的作用,他只是作為乙個代號來使用,就如同乙個人的綽號一樣,或者是如門牌號
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指標本身
道理是不在同乙個記憶體空間中,交換指標本身不能影響到主函式的資料
用這個&也是一樣的道理
3樓:匿名使用者
c語言中函式的引數傳遞都是傳遞值的。
假設swap函式你是這樣寫得
swap(int a,int b)
。這函式內部a和b的值確實是改變了,但是在main中的a和b不會改變的。
你寫得第二個程式應該編譯都不會通過。temp是乙個整型值,而a是乙個整型指標,兩者之間無法賦值。
4樓:adore_賈伯斯
思維混亂 整形變數去存指標位址? 你也沒搞清楚區域性變數的含義。
c語言中的指標中的*和&什麼意思,指標到底是什麼東西,指標變數和指標常量又是用來幹嘛的?
5樓:gta小雞
如果把每個記憶體
copy單元比作乙個房間,那麼它們的位址就是門牌號。指標變數中儲存的是其他變數的位址,即房間內存放的是其他房間的門牌號。例如有變數int a=2,其位址為0x402000,則a代表a的內容,為2;&a代表取a的位址,為0x402000;定義指標int *p=a,則p的內容是a的位址0x402000,*p的內容是p指向的位址的內容,即a的內容,為2.
計算機中CE是什麼意思
ce 是指微軟的掌上電腦作業系統。ce customer edge 裝置 是使用者網路邊緣裝置,有介面直接與服務提供商相連,可以是路由器,也可以是交換機等。ce是感知不到vpn的存在的。是指微軟的掌上電腦作業系統 網路中的ce ce裝置 ce更多的是出現在vpn中的,與之對應的是pe。ce cust...
計算機中DRAM什麼意思,dram在計算機課上什麼意思呢
動態隨機訪問儲存器最為常見的系統記憶體。dram dynamic random access memory 即動態隨機訪問儲存器,最為常見的系統記憶體。dram 只能將資料保持很短的時間。為了保持資料,dram使用電容儲存,所以必須隔一段時間重新整理一次,如果儲存單元沒有被重新整理,儲存的資訊就會丟...
JAVA在計算機中代表什麼意思,計算機java中是什麼意思
java是印度尼西亞爪哇島的英文名稱,因盛產咖啡而聞名。java語言中的許多庫類名稱,多與咖啡有關,如javabeans 咖啡豆 beans 網路豆 以及objectbeans 物件豆 等等。sun和java的標識也正是一杯正冒著熱氣的咖啡。在計算上是一種程式語言 計算機java中 是什麼意思 是求...