美文网首页
JNI基础 -- C++基础知识(指针数组)

JNI基础 -- C++基础知识(指针数组)

作者: 刘小厨 | 来源:发表于2020-04-17 20:33 被阅读0次

数组和指针,数组指针,指针数组

数组

声明一个数组

int arr[]={100,200,300};

这个比较简单,不做过多介绍

数组指针

数组指针是一个指针,指向数组的首地址,我们可以通过指针数组操作数组,举个栗子如下:

int main()
{
    int arr[] = {100,200,300};
    int* p = arr;
    *p = 400;
    for (int i = 0; i < 3; i++)
    {
        //输出结果为:
        printf("%d\n", arr[i]);
    }
}

上面代码的输出结果为:400,200,300
我们如果想操作数组的第二个数值,可以通过*(p+1) = xxx;来实现,其它同理。这种操作也叫做指针运算,指针的+1操作,是指针在内存中走过对应类型的步长,如上面代码是int类型的指针,所以走过的步长是4,内存中对应的就是数组的第二个元素(数组在内存中是连续的)。
如果是byte类型对应*(p+1)只加1字节
shor类型对应*(p+1)只加2个字节

指针数组

顾名思义:指针数组是一个数组,数组中存放的每一个元素都是一个指针

举个栗子:

int main()
{
    int arr[] = {100,200,300};
    int* p[3];//指针数组
   
    for (int i = 0; i < 3; i++)
    {
        p[i] = &arr[i];
    }

    for (int i = 0; i < 3; i++)
    {
        printf("指针数组:%d\n", *p[i]);
    }
    return 0;
}

上面代码的输出结果为(*p[i]表示指针指向的元素):
指针数组:100
指针数组:200
指针数组:300

优先级

() > [] > *

比如int* p[3]; 因为[]的优先级大于 *,所以这句代码表示:声明的是一个数组,数组的数据类型是指针

数组指针(也叫行指针)

定义: int (*p)[n] 如上所述 ()的优先级是最高的,所以这句代码表示:声明一个指针,指向的数据类型是数组

举个栗子:

int a[3][4]; 
int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。
p=a;//将该二维数组的首地址赋给p,也就是a[0]或&a[0][0]
p++;//该语句执行过后,也就是p=p+ 1;p跨过行a[0][]指向了行a[1]]

数组指针可以表示一个二维数组,比如一张图片,可以认为由一个二维数组组成,利用指针数组可以浏览一张图片。

指针数组与数组指针的区别:


区别

指针数组:是一个数组,每个元素是一个地址
数组指针:是一个变量,变量存放的是指针,指向一个二维数组第一行的首地址,步长是数组的一行,如果p+1name指针指向二维数组第二行的首地址,所以也叫行指针。

相关文章

  • JNI基础 -- C++基础知识(指针数组)

    数组和指针,数组指针,指针数组 数组 声明一个数组 这个比较简单,不做过多介绍 数组指针 数组指针是一个指针,指向...

  • JNI 基础知识

    JNI 基础知识 什么是 JNI ? JNI (Java Native Interface) 是 Java 沟通 ...

  • 指针数组和数组指针

    指针数组|存储指针的数组 在C语言和C++语言中,数组元素全为指针的数组称为指针数组。 例如:int *p[10]...

  • 绿盟面试准备

    C++基础知识 指针和引用的区别: 指针是一个变量 ,引用是别名.指针可以初始化为空, 引用必须初始化为具体的值....

  • C++基本概念复习_2018-06-25

    C++基础 (1)C和C++的区别 C++分为: C部分(区块、语句、预处理器、内置数据类型、数组、指针等); 面...

  • JNI 入门

    基础知识 1 什么是JNI?JNI全称为:Java Native Interface。JNI 是本地编程接口,它使...

  • cmake快速实战

    目录 cmake快速实战 Android JNI基础知识讲解 Android JNI实战 makefile前言 我...

  • Android JNI 数组操作

    JNI 中有两种数组操作,基础数据类型数组和对象数组,JNI 对待基础数据类型数组和对象数组是不一样的。 基本数据...

  • 学习笔记3(指针运算,函数参数与指针,数组指针,二级指针)

    一、指针运算 二、数组与指针 三、指针和函数参数 java中: C/C++中: 四、指针数组 五、 二级指针 六、...

  • C语言的指针与数组(进阶篇之一)

    一、一维数组与指针 (1).数组指针在C语言中,数组的首地址称为数组指针。而C++规定,数组的首地址可用数组名a表...

网友评论

      本文标题:JNI基础 -- C++基础知识(指针数组)

      本文链接:https://www.haomeiwen.com/subject/ymmyvhtx.html