27 二重指標和二維陣列

2021-07-10 20:58:24 字數 2057 閱讀 5936

因格式問題,截圖上傳。

27.double_pointer

/* * 公司:***x

* 部落格:

* github:

* 專案:二重指標和二維陣列

* 功能:演示二重指標的用法。

*/#include

void func(int

**p)

int main(int argc, char **argv)

; // 定義指標陣列,陣列元素為int

*型別 int

**p5 = array; // 陣列名array做右值時表示陣列首元素首位址,即int

**型別

printf("**p5 = %d. **(p5+1) = %d.\n", **p5, **(p5+1)); //

**p5 = 12. **(p5+1) = 15.

// 在某個函式內部通過二重指標傳參改變一重指標的指向

int f = 20;

int*p6 = &f;

printf("p6 = %p.\n", p6); // p6 = 0xbfd2f3b8.

func(&p6);

printf("p6 = %p.\n", p6); // p6 = 0x12345678.

return

0;}

27.darray

/* * 公司:***x

* 部落格:

* github:

* 專案:二重指標和二維陣列

* 功能:演示二維陣列的兩種訪問方式。

*/#include

int main(int argc, char **argv)

, };

int i = 0, j = 0;

// 通過下標訪問二維陣列

for (i=0; i<2; i++)

// a[1][0] = 4. a[1][1] = 5. a[1][2] = 6.

}// 通過指標方式訪問二維陣列

int (*p)[3] = a;

for (i=0; i<2; i++)

}return

0;}

27.darray_pointer

/* * 公司:***x

* 部落格:

* github:

* 專案:二重指標和二維陣列

* 功能:演示二維陣列和指標的糾葛。

*/#include

int main(int argc, char **argv)

, , };

int i = 0, j = 0;

// 指標指向二維陣列的陣列名

int (*p1)[2] = array;

for (i=0; i<3; i++)

}// 指標指向二維陣列的第一維

int *p2 = array[0];

printf("*(p2+1) = %d.\n", *(p2+1)); // *(p2+1) = 2.

// 指標指向二維陣列的第二維

int *p3 = &array[0][0];

printf("*(p3+1) = %d.\n", *(p3+1)); // *(p3+1) = 2.

return

0;}

二維陣列與二重指標賦值問題之實驗

前一段時間做了乙個關於二維陣列和二重指標的互相賦值的實驗,很有意思,特記錄下來。由於陣列是指標的語法糖,所以我之前一直認為兩者可直接進行賦值轉換。後來發現在二維陣列中這樣做是不可行的,現將實驗現象記錄如下 實驗 include int main int argc,char ar int p1 a 報...

二維陣列 二維陣列和指標

include using namespace std int main 如上面這段程式所示,通過取位址符 指標 p 獲得了變數 a 的位址,那麼解引用符 就可以從 p 中得到變數 a 的值。也就是說,p a和 p a是等價的。p 是變數 a 的位址,從 p 中就可以取出 a 的值。反之,能從 p ...

二維指標和二維陣列

二維指標和二維陣列有三種形式 1,type ptr 2,type ptr或者type prt 3,type prt 三種形式意思相近,也有區別。首先三種形式都能表示二維的資料結構。1,type ptr 表示乙個指向指標的指標 但是在一開始宣告的時候 type ptr ptr到底指向幾個指標是不知道的...