读书人

行指针便是二级指针吗

发布时间: 2012-11-20 09:55:43 作者: rapoo

行指针就是二级指针吗?
在看回C语言的时候,看到行指针跟二级指针怎么挺像的?他们什么关系啊,最后举例子说明下

[解决办法]
指针的类型不同而已。
int array[ROW][COL];定义的一个二维数组,那么array是数组的首地址,int (*p)[COL] = array;
该指针和指向int *q = array[0];的指针的类型不同。指针p可以理解为int(*)[COL]类型的指针,那么指针q是int *类型的指针。所以,p+1跳过的是COL*4个字节,而q+1跳过的是1*4个字节。
[解决办法]

C/C++ code
//在堆中开辟一个4×5的二维int数组#include <stdio.h>#include <malloc.h>int **p;int i,j;void main() {    p=(int **)malloc(4*sizeof(int *));    if (NULL==p) return;    for (i=0;i<4;i++) {        p[i]=(int *)malloc(5*sizeof(int));        if (NULL==p[i]) return;    }    for (i=0;i<4;i++) {        for (j=0;j<5;j++) {            p[i][j]=i*5+j;        }    }    for (i=0;i<4;i++) {        for (j=0;j<5;j++) {            printf(" %2d",p[i][j]);        }        printf("\n");    }    for (i=0;i<4;i++) {        free(p[i]);    }    free(p);}//  0  1  2  3  4//  5  6  7  8  9// 10 11 12 13 14// 15 16 17 18 19 

读书人网 >C语言

热点推荐