您的位置:首页 > 其它

指针与数组_数组指针

2017-12-01 16:35 239 查看
数组指针:即指向数组的指针

定义数组指针:int (*q)[4];//q为一个数组指针变量,指向每一行有四个整形元素的数组。

这两篇文章还可以:https://www.cnblogs.com/mq0036/p/3382732.htmlhttp://blog.csdn.net/touch_2011/article/details/6966980



整形指针和数组指针指向二维数组的区别:

#include<stdio.h>
int main()
{
    int a[2][4] = { {1,2,3,4},{5,6,7,8} };
    int *p = a;
    int(*q)[4] = a;//a的类型为int (*)[4],&a的类型为int (*)[2][4],a表示数组第一个元素的地址,&a表示整个数组的首地址
    printf("%d\n", *(p + 1));//输出2,注意整形指针和数组指针指向二维数组的区别
    printf("%d\n", **(q + 1));//输出5
    printf("%d\n", q[1][0]);//输出5
    return 0;
}




#include<stdio.h>
int main()
{
    int a[2][4] = { {1,2,3,4},{5,6,7,8} };
    printf("a的地址为%p\n", a);
    printf("a[0]的地址为%p\n", &a[0]);
    printf("a[0]的值为%p\n", a[0]);
    printf("*a的值为%p\n", *a);//a的元素为a[0]和a[1],*a就相当于a[0]
    printf("a[0][1]=%d\n", *(a[0] + 1));//2,注意a[0]是数组a第一行的首地址
    printf("a[0][1]=%d\n", *(*a + 1));//2
    printf("a[1][0]=%d\n", *a[1]);//5,a[1]是数组a第二行的首地址
    printf("a[1][0]=%d\n", **(a + 1));//5
    int(*p)[4] = a;//这时候p就和a一样,上面的a都可以改为p。

    return 0;
}




未完待续。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: