一维数组和二维数组和指针的关系、数组指针的定义方法及使用方法。

一维数组和二维数组和指针的关系、数组指针的定义方法及使用方法。

#include <stdio.h>

/***
而对于一维数组来讲,它与指针相结合的话,对地址来讲,有以下关系。
eg:int a[i];
1. 数组地址     数组首元素地址
    &a           a
对于二维数组来讲,它与指针相结合的话,对地址来讲,有以下关系。
数组指针的表达式
eg: int (*p)[j];    //
eg:int a[i][j];
1. 数组地址   数组首行地址   数组首元素地址
      &a          a              *a
2. 数组任意行首元素地址的表达方式
    a[i]    *(a+i)
3. 数组任意行地址的表达方式
    &a[i]    a+i
4. 数组任意元素地址的表达方式
    &a[i][j]   a[i]+j  *(a+i)+j
5. 数组任意元素的表达方式
    a[i][j]    *(a[i]+j)   *(*(a+i)+j)
6. **a代表的就是数组首元素
    ***/


int main(void){

    int a[2][4] = {{1,2,3,4},{5,6,7,8}};
    int b[4] = {4,9,2,7};
//下面定义的p1和p2是数组指针,指向的是一个含有4个元素的一维数组的地址
//对于一维数组来讲,数组名字代表的是该数组第一个元素的地址,而对于二维数组来讲,数组名字代表的就是第一行数组的地址、
    int (*p1)[4];   
    int (*p2)[4];
    int *p3;    //

    p1 = a;
    p2 = &b;      //在一维数组当中,数组名代表的是首元素的地址值,而该一维数组的地址值应用&b来表示。
    p3 = b;      //由于p3是(int *)型的指针变量,所以与一维数组的数组名所代表的指针变量类型一样。
    p3 = *a;     //同理对于二维数组来讲,*a的指针变量类型与p3相同。

    printf("%d",*b);
    printf("\r\r\n");
    printf("%d",*(*(p1+1)+3));
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值