zoukankan      html  css  js  c++  java
  • 数组指针和指针数组

    1.数组指针

     也称作行指针。若定义数组指针 int (*p)[n],表示这是一个数组指针,是一个指针变量,可以理解为指向二维数组的行指针。n 是这个指针的步长,当执行p+1时,要跨越n个int(在这里是int)类型数据的长度。

      将二维数组赋给一个指针,如下:

    int a[3][4];
    int (*p)[4];  //定义数组指针,用于指向二维数组的一行,他是一个指针变量
    p = a;  //将二维数组的首地址赋值给p ,也就是a[0] 或者 &a[0][0]
    p++;  //该语句执行后相当于 p = p+ 1,可以使得p指向二维数组的下一行

    2.指针数组

       和上者不同,若定义 int* p[n], 表示这是一个指针数组,他是多个指针变量而非一个。

    如果将二维数组赋值给一个指针数组,则可以表示为:

    int *p[3];
    int a[3][4];
    for(int i = 0; i< 3; i++)
    {
         p[i] = a[i];
    }

    这里int* p[3]表示存储3个指针变量,分别是p[0] p[1],p[2]所以分别赋值。

    总结:

    数组指针时一个指针变量,是一个行指针,在地址空间中占据一个指针变量的大小;指针数组是多个指针变量,在内存中占用多个指针类型数据空间大小。

  • 相关阅读:
    宋宝华: 文件读写(BIO)波澜壮阔的一生【转】
    内核工具 – Sparse 简介【转】
    【java】JSON.toJSONString 空对象也可以转化为JSON字符串
    Seata分布式事务简单使用
    Mixin 工作原理
    公链
    公链
    公链
    公链
    公链
  • 原文地址:https://www.cnblogs.com/PrayG/p/10681768.html
Copyright © 2011-2022 走看看