指標基礎(此文還沒涉及指標作為函式形參)

2021-08-11 19:34:23 字數 1212 閱讀 1467

#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修改的實際上是這個指標的乙個副本,所以不會對原來的指標產生效...