说明:以指针数组int *p[3]和数组指针int (*p)[3]为例说明。
一、概念性区别
1、指针数组与数组指针的区别
已知:“[]”比“*”的运算级别高
分析:
(1)int *p[3]是一个指针“数组”,有三个元素
(2)int (*p)[3]是一个指向列元素有三个的二维数组的“指针”
2、数组指针与指向指针的指针的区别
以int (*p)[4]与int * *p的区别为例说明。
(1)前者p+1代表地址增加16
(2)后者p+1代表地址增加4
二、实验环节
1、int *p[3]实验
#include <iostream> using namespace std; int main(int argc, char* argv[]) { int* p[3]; int a[3] = {1, 2, 3}; int b[4] = {4, 5, 6}; int c[4] = {7, 8, 9}; int i,j; p[0] = a; p[1] = b; p[2] = c; for(i = 0;i < 3;i++){ for(j =0;j < 3;j++){ cout << p[i][j]; } cout <<endl; } return 0; }
实验结果
2、int (*p)[3]实验
#include <iostream> using namespace std; int main(int argc, char* argv[]) { int (*p)[3]; int a[2][3] = {{1, 2, 3},{4, 5, 6},{7,8,9}}; int i,j; p = a; for(i = 0;i < 3;i++){ for(j =0;j < 3;j++){ cout << p[i][j]; } cout <<endl; } return 0; }
实验结果