C/C++指针数组与数组指针的区别
作者:互联网
1、指针数组与数组指针的区别:
什么东西在后面就是什么东西
1.1、指针数组:
本质就是数组;多个一级指针的集合;对于指针数组通常是用来处理字符串的;
定义指针数组:int* pArray[3]
1 //指针数组充当函数参数 2 void myPrintf(char* pArray[], int len) 3 { 4 for (int i = 0; i < len; i++) 5 { 6 printf("%s", pArray[i]); 7 } 8 } 9 10 11 int main() 12 { 13 //定义一个字符数组并初始化 14 char Array[5] = "qwer"; 15 16 //定义一个指针数组并初始化 17 char* pArray[3] = { "abcd","efjf","gsdfe" }; 18 19 printf("Array[5] = %s\n", Array); 20 21 22 printf("通过数组下标来访问:\n"); 23 for (int i = 0; i < 3; i++) 24 { 25 printf("%s", pArray[i]); 26 } 27 28 29 printf("\n通过指针偏移来访问:\n"); 30 for (int i = 0; i < 3; i++) 31 { 32 printf("%s", *(pArray + i)); 33 } 34 35 printf("\n\n"); 36 myPrintf(pArray,3); 37 38 return 0; 39 }
1.2、数组指针:
本质就是指针;产生的是一个指针变量,指针变量指向的是一个数组;对于数组指针通常是用来表示二维数组的;
定义数组指针:int(*pArray)[3]
1 //数组指针充当函数参数 2 void myPrintf(int(*pArray)[4], int row, int clos) 3 { 4 printf("数组指针充当函数参数:\n"); 5 for (int i = 0; i < row; i++) 6 { 7 for (int j = 0; j < clos; j++) 8 { 9 printf("%d\t", pArray[i][j]); 10 } 11 printf("\n"); 12 } 13 } 14 15 16 int main() 17 { 18 int Array[3][4] = { {2,1,4,0}, 19 {3,7,2,5}, 20 {5,9,6,6} 21 }; 22 //定义一个数组指针并初始化 23 int(*pArray)[4] = Array; 24 25 26 printf("通过数组下标来访问:\n"); 27 for (int i = 0; i < 3; i++) 28 { 29 for (int j = 0; j < 4; j++) 30 { 31 printf("%d\t", pArray[i][j]); 32 } 33 printf("\n"); 34 } 35 36 printf("通过指针偏移来访问:\n"); 37 for (int i = 0; i < 3; i++) 38 { 39 for (int j = 0; j < 4; j++) 40 { 41 printf("%d\t", *(*(pArray+i)+j)); 42 } 43 printf("\n"); 44 } 45 46 myPrintf(Array, 3, 4); 47 48 return 0; 49 }
搜索
复制
<iframe height="240" width="320"></iframe>标签:int,pArray,C++,++,数组,printf,指针 来源: https://www.cnblogs.com/zhuchunlin/p/15896868.html