数组指针——指向数组的指针(通过指针控制数组)
生活随笔
收集整理的這篇文章主要介紹了
数组指针——指向数组的指针(通过指针控制数组)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
//一維數組int arr1[5] = { 1,2,3,4,5 };int(*arrP)[5] = &arr1; //定義數組指針 必須用&arr1, arr1是數組首元素的地址;&arr1是代表數組地址雖然地址都一樣但是當加1的時候就有區別了,說明還是代表的不同東西for (int i = 0; i < sizeof(arr1) / sizeof(arr1[0]); i++) //當遍歷數組是一個方法時不用寫死(得到數組的行列數)
{printf("arr1[%d]=%d\n", i, (*arrP)[i]);}printf("--------------------------------\n");//二維數組int arr2[3][5] = { {1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15} };arrP = arr2; //數組指針指向二維數組for (int i = 0; i < sizeof(arr2) / sizeof(arr2[0]); i++)//當遍歷數組是一個方法時不用寫死(得到數組的行列數)
{for (int j = 0; j < sizeof(arr2[0]) / sizeof(arr2[0][0]); j++){printf("int[%d][%d]=%d\n", i, j, (*(arrP + i))[j]);// printf("int[%d][%d]=%d\n", i, j, arr2[i][j]);
}}printf("--------------------------------\n");//三維維數組int arr3[2][3][4] = {{{ 1 ,2 ,3 ,4 },{ 5 ,6 ,7 ,8 },{ 9 ,10 ,11 ,12 }},{{ 13 ,14 ,15 ,16 },{ 17 ,18 ,19 ,20 },{ 21 ,22 ,23 ,24 } }};int(*arrP2)[3][4] = arr3;//這個是第一次見到,是自己通過數組指針推倒出來的,我感覺它叫三維數組指針還是二維數組指針合適呢?//int(**arrP3)[4]; //這樣寫也正確但是不能把arr3地址付給它,這個我沒從書上見過,是自己通過數組指針推倒出來的,這是數組二級指針?for (int i = 0; i < sizeof(arr3) / sizeof(arr3[0]); i++){for (int j = 0; j < sizeof(arr3[0]) / sizeof(arr3[0][0]); j++){for (int k = 0; k < sizeof(arr3[0][0]) / sizeof(arr3[0][0][0]); k++){//printf("int[%d][%d][%d]=%d\n",i,j,k,arr3[i][j][k]);printf("int[%d][%d][%d]=%d\n", i, j, k, (*(*(arrP2 + i) + j))[k]);}}}getchar();
?
指針和數組直接對應關系之如何記憶
轉載于:https://www.cnblogs.com/zakers/p/6933609.html
總結
以上是生活随笔為你收集整理的数组指针——指向数组的指针(通过指针控制数组)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 做梦梦到自己头发掉光了是什么意思
- 下一篇: 梦到自己老公吐血是怎么回事