美文网首页
指针数组 数组指针

指针数组 数组指针

作者: hehehehe | 来源:发表于2023-03-29 14:34 被阅读0次

总结:主要看后面的两个字是什么(前面是修饰作用),因此指针数组是数组,而数组指针是指针。

指针数组

指针数组:是指一个数组里面装着指针,也即指针数组是一个数组;
定义形式:int *a[10];
说明[]优先级高于*,该定义形式应该理解为:int * (a[10]);括号里面说明a是一个数组,包含了10个元素,括号外面说明每个元素的类型为int *。

#include <stdio.h>
int main(){
    int a = 16, b = 932, c = 100;
    //定义一个指针数组
    int *arr[3] = {&a, &b, &c};//也可以不指定长度,直接写作 int *arr[]
    //parr 是指向数组 arr 的指针,确切地说是指向 arr 第 0 个元素的指针,
    //它的定义形式应该理解为int *(*parr),括号中的*表示 parr 是一个指针,括号外面的int *表示 parr 指向的数据的类型。
    //arr 第 0 个元素的类型为 int *,所以在定义 parr 时要加两个 *。
    int **parr = arr;
    printf("%d, %d, %d\n", *arr[0], *arr[1], *arr[2]);//16, 932, 100
    printf("%d, %d, %d\n", **(parr+0), **(parr+1), **(parr+2));//16, 932, 100
 
    return 0;
}

数组指针

数组指针:是指一个指向数组的指针,它其实还是一个指针,只不过是指向数组而已;
定义形式:int (*p)[10];
该指针变量保存的是一个数组的首地址,它指向一整个数组(),数组的类型为int[10]

int main(void)
{
    char a[5]={'A','K','C','G','L'};    
    char (*p)[5]=&a;//&a代表的是整个数组的首地址
    //char (*p)[5]=a;这样是错误的,因为a代表第一个元素的首地址
    printf("%c %c %c",**p,*(*p+1),*(*p+3));//输出:A K G
    return 0;
}

说明:a代表的是第一个元素的地址,即:&a[0],而&a代表的是整个数组的地址。a+1代表的是下一个元素的地址,即&a[1],而&a+1代表的是向后移动5个字节的地址。这里为什么用的二级指针呢?因为p=&a,p即为第一个元素的地址,再p即输出了第一个元素。同理,(p+1),(*p+3)输出第二个元素,第四个元素。

二维数组

a 数组包含3行,即3个行元素:a[0]、a[1]、a[2]。

image.png
#include <iostream>
#include <string>
#include <cstdio>//声明sprintf

using namespace std;

void InitPointer(int **ptr, int length, int default_value) {
  *ptr = (int*)malloc(sizeof(int) * length);
  cout<< *ptr<<endl;
  for (int i = 0; i < length; ++i) {
    (*ptr)[i] = default_value;
  }
}

int main()
{
    int * ptr =nullptr;
    cout<<ptr<<endl;
    InitPointer(&ptr,2,2);
    for (int i = 0; i < 8; i++)
    {
        cout<<ptr[i]<<endl;
    }
    cout<<ptr<<endl;
    cout<<(ptr == nullptr) <<endl; 
    free(ptr);
}

相关文章

  • 混淆知识点

    1、指针数组&数组指针、常量指针&指针常量、函数指针&指针函数 数组指针&指针数组 数组指针的定义 int (*p...

  • C语言的数组指针与指针数组(One)

    一、数组指针与指针数组: 数组指针<——>本质是指针 指针数组<——>本质是数组上图: 二、数组指针: int ...

  • 函数指针

    概念: 指针函数, 函数指针, 指针数组, 数组指针, 指向数组的指针, 指向函数指针数组的指针。

  • 指针与数组和函数的几个关系

    指针数组、数组指针 指针数组。数组的元素类型是指针如:int* a[4] 数组指针。指向数组的指针变量如:int ...

  • C语言指针相关

    一、指针数组 和 数组指针的区别:1:指针数组,还是数组,数组每个元素是指针。2:数组指针,是指针,指向的是数组。...

  • C语言

    C 指针、指针变量、函数指针、指针函数、指针数组、数组指针、C 数组

  • 指针笔记

    指针数组和数组指针 数组指针是指向数组的指针,指针的值与数组首元素地址相同,但范围是整个数组,所以数组指针和数组名...

  • C语言21 指针数组与数组指针

    C语言21 指针数组与数组指针 指针数组的定义 指针数组的赋值 结构体指针数组 分析下面的代码 数组指针的定义 数...

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

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

  • 指针

    指针数组与数组指针 在这里数组指针是指向数组的指针,其本质为指针,指向的对象是数组。由于数组的形式多样所以数组指针...

网友评论

      本文标题:指针数组 数组指针

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