今天寫了個非常小的測試程式,看似沒多大用處,其中包含的思想還是蠻多的,來看看吧,首先貼出原始碼
#include
using namespace std;
int main(int argc, const char *ar**)
;int *p1;
for (p1 = &b[0][0]; p1 < &b[0][0] + 12; p1 ++)
cout << endl;
}但是,不是還有一句話說,陣列名表示陣列的首位址(首元素的位址),又有而為陣列又可看成陣列的陣列,所以陣列可以看成b[0],b[1],b[2]三個元素組成,b[0]又是由4個元素組成的陣列,b[0]可以看做而為陣列第一行的首位址,如此改進的版本就出來了,修改for迴圈為下面:
for (p1 = b[0]; p1 < b[0] + 12; p1 ++)
思考一下,能否寫成p1 = b?結論是不行的.原因是b指向的是b[0](二維陣列的首行,即指向乙個一維陣列),與p1的型別不匹配(p1是指向整型資料的指標變數),編譯時出錯,
這種思想雖然錯誤,但是為**的改進還是提供的思路,即b指向b[0],所以**的改進就這樣呼之欲出
因為b[0]與*b無條件等價,所以還可以繼續改進為下面的**:
for (p1 = *b; p1 < *b + 12; p1 ++)
用指標逆序輸出陣列中的元素
方法一 用while迴圈逆序輸出陣列元素 include define n 6 main int pi1 int pi2 int i pi1 arr 首元素的位址 pi2 arr n 1 尾元素的位址 交換元素的位置 while pi1 pi2 輸出陣列中逆序後的元素 pi1 arr for i 0...
用指標引用陣列元素並列印輸出
includevoid main int aptr,i 指標變數宣告 aptr a 0 指標變數指向變數a for i 0 i 5 i 通過陣列下標引用元素 printf a d d n i,a i for i 0 i 5 i 通過陣列名引用元素 printf a a d d n i,a i for...
指向一維陣列元素的指標
char型別的變數要占用1位元組,所以p 1代表p的值加1 float型別的變數占用4位元組,所以p 1代表p的值加4。從這一點,也可以很好地說明為什麼指標一定要分型別,不同型別的指標,p 1的含義是不一樣的。1 定義乙個int型別的陣列 2 int a 4 3 4 定義乙個int型別的指標,並指向...