指標輸出陣列元素 偶得試手,不值一提

2021-09-30 10:47:11 字數 661 閱讀 2195

今天寫了個非常小的測試程式,看似沒多大用處,其中包含的思想還是蠻多的,來看看吧,首先貼出原始碼

#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型別的指標,並指向...