说明:以指针数组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;  
}

实验结果

posted on 2013-12-10 08:58  amanlikethis  阅读(590)  评论(0编辑  收藏  举报