1樓:最大的寶寶
*pointer是指標指向的一個值,此時為2,這個值再自加1自然為3。
pointer此時還指向值2,減2的含義是指標回退兩個元素,自然指向了值6。
指標本身有值,表示它指向的地址,這個值可以運算,表示對地址的修改。而指標指向的值,其實就是位於這個地址所存的值。
在彙編以上層次的程式設計中,記憶體實際上理解為地址和值就夠了,比如說指標值為100,就相當於地址100(這實際上是一個基於基址的偏移),而說指標指向200時,實質是說位於地址100的記憶體儲存了200這個值。
再推廣到函式的引數,書上所謂的形參,變參什麼的除了混淆是非,沒用,只要記好何時傳地址,或傳值,就不會有什麼問題。
在記憶體中是找不到指標這種有形的東西的,如果我們把記憶體中某個位置存放的一個數值看成指標,那這個值就是某個值所在的地址。到這個地址去找,才能知道某個值的大小。到了下一個程式執行的時候,這個位置存放的值的含義可能又變了。
因此,學語法是一個長期的過程,要能理解到為什麼這樣是合理的,才算真正出師了
2樓:自我程式設計
注意*pointer++和*(pointer++),執行結果是一樣的,都是先取pointer的地址,再++。
pointer初始指向arr[3],值2。
執行printf("%d\n",*pointer);pointer指向arr[3],先列印pointer指向值2,列印後pointer指向arr[3]。
執行printf("%d\n",*pointer++);pointer指向arr[3],先列印pointer指向值2,列印後pointer++指向arr[4]。
執行printf("%d\n",*(pointer++));pointer指向arr[4],再列印pointer指向值5,列印後pointer++指向arr[5]。
執行printf("%d\n",*--pointer);先執行--,指向arr[4],再列印pointer指向值5,列印後pointer指向arr[4]。
執行printf("%d\n",*(--pointer));先執行--,指向arr[3],再列印pointer指向值2,列印後pointer指向arr[3]。
執行printf("%d\n",++(*pointer));先取指向地址arr[3]的值2,將arr[3]的值++,列印3,列印後pointer指向arr[3]。
執行printf("%d\n",*(pointer-2));先執行-2,指向arr[1],再列印pointer指向值6,列印後pointer指向arr[1]。
執行printf("%d\n",*(arr+3));arr+3就是arr[3],列印3(arr[3]在倒數第三條已自增)。
3樓:匿名使用者
第一個,pointer下標地址為3內容為2,自加符號在前,是先加完再執行,2+1等於3
第二pointer下標地址為3,3-2等於1,下標地址為1的內容是6。
我自學c語言,這是我的理解。
4樓:娛樂文風
30分鐘徹底學會c語言指標
5樓:進口房間捱了
指標(pointer)是程式語言中的一個物件,利用地址,它的值直接指向(points to)存在計算機儲存器中另一個地方的值。由於通過地址能找到所需的變數單元,可以說,地址指向該變數單元。因此,將地址形象化的稱為「指標」。
意思是通過它能找到以它為地址的記憶體單元。
作個比喻,假設將計算機儲存器當成一本書,一張內容記錄了某個頁碼加上行號的便利貼,可以被當成是一個指向特定頁面的指標;根據便利貼上面的頁碼與行號,翻到那個頁面,把那個頁面的那一行文字讀出來,這就是指標的作用。
6樓:聽不清啊
#include
int main()
,i,*p=&a[3];
printf("%d\n",*p); //輸出2
printf("%d\n",*p++); //輸出2,再p指向5
printf("%d\n",*(p++)); //輸出5,再p指向8
printf("%d\n",*--p); //p先前移,指向5,再輸出5
printf("%d\n",*(--p)); //p先前移,指向2,再輸出
printf("%d\n",++(*p)); //先自增,變為3後再輸出3
printf("%d\n",*(p-2)); //p先前移2位,指向6,再輸出6
printf("%d\n",*(a+3)); //輸出3
return 0;}
C語言指標問題,C語言指標問題?
文庫精選 內容來自使用者 zzbo2022 讓你不再害怕指標 前言 複雜型別說明 要了解指標,多多少少會出現一些比較複雜的型別,所以我先介紹一下如何完全理解一個複雜型別,要理解複雜型別其實很簡單,一個型別裡會出現很多運算子,他們也像普通的表示式一樣,有優先順序,其優先順序和運算優先順序一樣,所以我總...
c語言指標概念問題,C語言指標問題(初學者)
文庫精選 內容來自使用者 維旺 精選 沒有那麼複雜,從彙編或者計算機原理層面,反而更用不到型別,那裡只有地址和偏移。定義變數,無法是兩個要素,型別和變數名,型別讓編譯器知道可以做哪些運算和如何計算 變數名讓編譯器做成一個名字和地址的對應,以便把後面作用域內所有的p,都翻譯成這個地址。所以,沒有那麼糾...
指標問題c語言
好幾個地方都有問題,幫你改改 include int f int x,int y int main int f 上面已經宣告瞭函式f了,這裡又有一個,去掉int i,a,b a 0 a初值為0 int p int,int 這個函式指標所指向的函式應該有兩個int型引數,即和f的引數一樣 p f 給函...