1樓:匿名使用者
其實這裡有這麼幾點需要明白:
我們通常會先宣告定義一個變數。如:int a ; a=10;那麼我們就在記憶體中開闢了一塊空間,我們把這空間用a來標記。
我們把a叫做整型變數!很容易理解a變數此時的值或內容是10,但還有一個問題你要知道,我們怎麼樣才能找到a在記憶體中的位置?這就是用這塊記憶體的開始的地址來標識的(加上不同型別的記憶體佔有長度一定,這樣就可以完全確定在記憶體中的區間),從前面這些說明我們知道任何一個變數(包括函式。
函式也要調入記憶體中)都有一個描述的地址,我們把這地址也叫指標!
那麼前面的a的地址也可一存到一個變數中,為了區別是不是存放地址的變數,我們把後一種變數叫指標變數 如:用 int *p1來定義,用 *來區別。我們把p1叫指標變數,而 在宣告中的 * 可以理解為「指向。。。
」,我們用英語的習慣(類似古文)從由向左翻譯:p1是指向整型的指標變數
int a, *p1;//定義宣告指標變數p1,* 可以理解為「指向。。。」
a=10;
2樓:智慧晶片
建議這樣理解吧
宣告時寫成int * name;
理解成name這個變數是int * 型別
賦值時是用name=地址
所以有int * name = 地址;
等價於int * name;//宣告
name = 地址;//賦值
*name = 值;//這個賦值首先是解析name的地址 得到name地址 然後把值寫到這個寫到name指向的地址中
3樓:老樹黃牛
最後printf輸出的是指標變數p1指向的數值。其他解答可參考http://zhidao.
關於c語言 指標問題希望大神幫我看戲**
4樓:匿名使用者
你這官方語句說的。。。而且你用錯場合了,那是用在函式體裡面的,用來傳遞值的改變等。
例題8.1和8.2區別就是在p型別定義的不同。理解起來挺簡單的啊。
第一題裡面p是整形變數,可以用來儲存int型別的變數。
第二題裡面p值int型別的指標變數,是用來儲存int型別變數的地址的。
第一題a,b的值發生了改變是因為p1,p2指向了a,b。並且通過了p這個整形變數作為中介將兩個值進行了互換。
第二題裡面a,b的值沒有改變,因為if語句裡面做的事情是通過p(注意這裡的p是指標),將p1,和p2裡面儲存的地址進行了互換,說白了這和a,b並沒有任何關係,只是改變了p1,和p2所指向的值的問題(因為地址互換了)。所以輸出來*p1,*p2變成了b,a。
不懂得歡迎追問哈
指標和指標變數有什麼區別呢C語言中指標和指標變數的區別是什麼??
用例子來看一下。int a 3 int p p a 現在來看一下。a 3這個式子先解釋一下 等式右邊是常量,左邊是變數。同理的p a,左邊的是指標變數,右邊的是指標 指標的基本概念 為了區別記憶體的不同位置,記憶體被分成位元組,記憶體的全部位元組順序地賦予一個稱為地址的編號。程式中的變數將在記憶體中...
c語言問題求教 關於指標變數問題
你不知道為什麼會這樣?其實,這個也很好理解的。因為你的p是指向int型資料的,而int型資料在你的編譯器中佔用的是4個位元組,所以你的結果才是 2,而不是 8.就拿你這個程式來說吧。p指向的是記憶體單元1638212。但是p 1指向的確實1638212 4.而不是1638212 1.這是由你的資料型...
c語言的指標問題,C語言的指標問題
printf c p 3 分佈來看,c是要列印輸出一個字元。p指向那個字元陣列,p就是字元 a 那麼 a 3是多少呢,a 1是b 2 是c 3 是d注意是 p 3 而不是 p 3 這是由區別的。是的。p 3。是對p指向的那個值加3,p開始是指向a的,故a加3後就是d了 而p 執行3次的話,是指標p本...