指针数组剖析

简介: 指针数组剖析

一:引入

什么是指针数组?

整型数组:存放整型的数组,如int arr[10];

字符数组:存放字符的数组,如:char ch[10];

指针数组:存放指针的数组,如:int*arr[10],char *ch[10];

二:指针数组

指针数组是存放指针的数组,指针数组的每个元素都是用来存放地址(指针)的。

指针数组举例:

#include <stdio.h>
int main()
{
  int i = 0;
  int a = 1;
  int b = 2;
  int c = 3;
  int d = 4;
  int e = 5;
  int* arr[5] = { &a,&b,&c,&d,&e };//指针数组存放的是a,b,c,d,e的地址
  int** p = arr;//*p说明p是指针变量,
  for (i = 0; i < 5; i++)
  {
    printf("%d ", *(*(p+i)));
  }
  return 0;
}

三:指针数组模拟二维数组

#include <stdio.h>
int main()
{
  int arr1[] = { 1,2,3,4,5 };
  int arr2[] = { 2,3,4,5,6 };
  int arr3[] = { 3,4,5,6,7 };
  int* p[] = {arr1,arr2,arr3};//数组名是首元素的地址,类型是int*,都存放在p数组中
  int i = 0;
  for (i = 0; i < 3; i++)
  {
    int j = 0;
    for (j = 0; j < 5; j++)
    {
      //printf("%d ", *(*(p + i) + j));
      //p+i得到的是数组p的元素的地址,*(p+i)得到的是arr1,arr2,arr3,
      //也就是上面三个数组的数组名,各首元素地址,
      //首元素地址+j,然后再解引用*,得到各数组的元素
      printf("%d ", p[i][j]);
    }
    printf("\n");
  }
  return 0;
}


目录
相关文章
|
1天前
使用指针访问数组元素
【10月更文挑战第30天】使用指针访问数组元素。
10 3
|
9天前
|
算法 索引
单链表题+数组题(快慢指针和左右指针)
单链表题+数组题(快慢指针和左右指针)
16 1
|
18天前
|
存储
如何使用指针数组来实现动态二维数组
指针数组可以用来实现动态二维数组。首先,定义一个指向指针的指针变量,并使用 `malloc` 为它分配内存,然后为每个子数组分配内存。通过这种方式,可以灵活地创建和管理不同大小的二维数组。
|
18天前
|
存储
如何通过指针数组来实现二维数组?
介绍了二维数组和指针数组的概念及其区别,详细讲解了如何使用指针数组模拟二维数组,包括定义与分配内存、访问和赋值元素、以及正确释放内存的步骤,适用于需要动态处理二维数据的场景。
|
18天前
|
存储 算法 C语言
C语言:什么是指针数组,它有什么用
指针数组是C语言中一种特殊的数据结构,每个元素都是一个指针。它用于存储多个内存地址,方便对多个变量或数组进行操作,常用于字符串处理、动态内存分配等场景。
|
24天前
魔法指针 之 二级指针 指针数组
魔法指针 之 二级指针 指针数组
16 1
|
26天前
|
存储
一篇文章了解区分指针数组,数组指针,函数指针,链表。
一篇文章了解区分指针数组,数组指针,函数指针,链表。
17 0
|
1月前
|
编译器 C语言
【C语言】指针篇-深入探索数组名和指针数组- 必读指南(2/5)
【C语言】指针篇-深入探索数组名和指针数组- 必读指南(2/5)
|
3月前
|
搜索推荐 C语言
指针与数组
指针与数组
57 9
|
3月前
|
算法 Java
双指针在数组遍历中的应用
文章深入探讨了双指针技术在数组遍历中的应用,通过实战例子详细解释了快慢指针和首尾指针的不同用法,并提供了解决LeetCode相关问题的Java代码实现。