#include
using
namespace
std;
/*指標 ---- 指向乙個位址( & null 0 )
*/int main()
#include
using
namespace
std;
/***陣列 類似 指標**
*/int main()
; int *p = a; //指標指向a
//*p == *a 預設指向陣列的第一位---0
cout
<< *p << endl; // 1
cout
<< *a << endl; // 1
p = &a[4];
cout
<< *p << endl; // 7
//指標加法運算 *p2 = p + 4 == p2[4]
int *p2 = p + 4; //5+4 > a陣列元素個數
cout
<< *p2 << endl; //下溢 越界
//指標減法運算
ptrdiff_t n = p2 - p; //ptrdiff_t是c++庫中的,就是typedef int ptrdiff_t
cout
<< n << endl;
int first = *a+4; //1 + 4 =5 4是個數值
cout
<< first << endl;
int last = *(a + 4); //7 4代表的是陣列加上4後的位置
cout
<< last << endl;
//a = ;
int *p3 = &a[2];
int i = p3[2];
cout
<< *p3 << endl; //5
//例子--遍歷
const size_t arr_sz = 10;
int int_arr[arr_sz] = ;
for (int *p = int_arr,*q = int_arr + arr_sz; *p != *q; *p++)
return
0;}
指標作為函式形參
先來看兩個程式 程式1 include void fun int p int main void 輸出為 程式2 include void fun int p int main void 輸出為 對於程式2,不難理解 程式1,明明改變了p的指向了,為什麼還是輸出1呢?其實問題的關鍵不是指標作為形參的...
C C 指標作為函式形參注意點
函式形參是指標變數,直接對其賦值 指標相互賦值 只是改變了它的指向,原先傳入的指標指向的內容並沒改變 若要想改動其指向的值,需要通過memcpy或通過指標呼叫賦值 include include include include include include include using namesp...
指標作為函式引數
當指標作為函式引數時,對引數本身的修改並不影響原來的值,比如下面的 刪除鍊錶中第乙個值為item的結點。但是結果卻不正確。void delete node head,int item 這段 的問題是,第乙個引數是指標型別而head null修改的實際上是這個指標的乙個副本,所以不會對原來的指標產生效...