请问下列代码的输出是多少

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xhyxxx/article/details/77865192

腾讯2017校招开发工程师

#include <stdio.h>
int main()
{
    int m []={1,2,3,4,5,6,7,8,9,0};
    int(*p)[4]=(int(*)[4])m;
    printf(“%”,p[1][2]);
    return 0;
}
int *p[4];  //定义一个指针数组,该数组中每个元素是一个指针,每个指针指向哪里就需要程序中后续再定义了。
int (*p)[4];  //定义一个数组指针,该指针指向含4个元素的一维数组(数组中每个元素是int型)。

1、int (*p)[4]:表示行指针,单位移动量为4个int类型。即p+1,则一次移动4个int类型
2、(int (*)[4])m:表示以数组指针类型组织m,每4个为一个数组
3、这样一来,m为{{1,2,3,4},{5,6,7,8},{9,0, , }},p指向第一行
4、故p[1][2]即 ((p+1)+2),表示第二行第三个元素,为7

猜你喜欢

转载自blog.csdn.net/xhyxxx/article/details/77865192
今日推荐