魔法指针 之 二级指针 指针数组

简介: 魔法指针 之 二级指针 指针数组

二级指针


二级指针的介绍

在介绍时,我们先介入一段代码

然后我根据代码一图叫你理解二级指针

int main()
{
  int a = 10;
  int* p = &a;
 
  int** pa = &p;
 
  return 0;
}

一图 KO 二级指针

二级指针的运算

解引用

还是刚刚的代码,我在此基础上添加了解引用操作和打印a值解引用前后信息

操作指令:把原本 a=10 改成 a=6

下图我标明了两代码的区别附加控制台输出



*pa通过对pa中的地址进行解引用,找到pa,*pa访问的是pa;

**pa先通过*pa找到pa,然后对pa进行解引用操作,*pa访问的是pa.


指针数组


概念

是存放指针的数组

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

指针数组的每个元素是地址,可以指向同一块区域

指针数组模拟二维数组

为什么叫模拟?

因为指针数组并不是真正的数组,数组是连续存放的

看下图👇

整形指针数组

使用指针数组一次性在控制台打印三个数组的内容

int main()
{
  int a1[4] = { 1,2,3,4 };
  int a2[4] = { 5,6,7,8 };
  int a3[4] = { 9,10,11,12 };
 
  int* p[3] = { a1,a2,a3 };
 
  int i = 0;
  for (i = 0; i < 3; i++)
  {
    int j = 0;
    for (j = 0; j < 4; j++)
    {
      /*输出方式一*/
      printf("%-4d ", p[i][j]);
      /*输出方式二*/
      //printf("%-4d ", *(*(p + i) + j));
    }
    printf("\n");
  }
  return 0;
}

控制台输出及代码解释

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