C语言,数组与指针:int (*)p[4]; int *q; int a[4];int b[3][4];

    xiaoxiao2021-03-25  132

    在学习C语言的过程中,相信很多朋友会碰到一些关于指针与数组方面的问题,特别是int (*p)[4],这个到底代表是什么,怎么才能更好的理解。

    int a[4] = {1,3,5,7};// 一维数组

    int b[3][4] = {{1,3,5,7},{2,4,6,8},{3,5,7,9}};// 二维数组

    int *p;// p是指向整型变量的指针

    int (*q)[4];  // q是指向一维数组(int (*) [4],并不是指向某个元素)的指针

    p = a;

    a代表首元素的地址,即&a[0]

    注意:&a是代表整个数组(int(*)[4]

    a+1 ==> &a[1],指针指到了a[1]的地址

    &a+1 ==> 指针指向了数组a内存地址的末尾了(如果a是二维数组,则是下一行)

    p = &a; 这是错误的写法,p为指向int *类型(即某一个整型变量的地址,如int number, a[0]),而&a类型为int(*)[4]

    p = b[0];

    q = b;

    二维数组,即一维数组里面又有一维数组

    数组名即表示首元素的地址,b的首元素是b[0]b[0]是一个一维数组(int(*)[]),所有二维数中的b[0]等同于一维数组a,b[0]表示的是b[0][0]的地址&b[0][0]

    q是指向数组(数组int(*)[],不是数组的某一元素int *)的指针,所以 q = b

    只要是理解数组名,&+数组名分别表示什么,指针指向的是什么类型。

    转载请注明原文地址: https://ju.6miu.com/read-9982.html

    最新回复(0)