通过代码加解析的方式带领大家分析 :数组与指针的关系

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 通过代码加解析的方式带领大家分析 :数组与指针的关系

通过代码加解析的方式带领大家分析 :数组与指针的关系


指针——数组


对于指针,数组,大家到目前为止,大多已经有了详细的了解与认识,并且能够正确的连立起来指针与数组的应用!这一点是非常重要的也是没有办法来取吸取经验的,这就依靠我们多多寻找练习题来刷,毕竟一个好的工程师,没有大量的代码,怎能成就??


对于数组与指针的简单应用场景,笔者仍旧按照代码加解析的方法来涉及!


下面请看笔者的简单代码:通过指针来打印数组元素!(1)



//通过指针来打印数组元素
#include <stdio.h>
int main()
{
  int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
  int* p = arr;
  int i = 0;
  int sz = sizeof(arr) / sizeof(arr[0]);
  for (i = 0; i < sz; i++)
  {
  printf("%d ", *p);
  p++;
  }
  return 0;
}

在上述代码中,定义了一个int类型的指针p,而且p指向数组arr ,而且数组名arr指的是数组首元素的地址! 假设,我们不知道该数组元素的大小,当然对于简短的数组我们可以去手动来查,但是对于几百几千的数组元素我们也是用手动来查数字蛮??这样的做法累不死人来还!这边还没有查出来整个数组元素的大小,而且竞争者已经将整个代码书写好,并且运行出来得出结果了,这样的对手跟猪一样的队友!优恶自见!因此,我们需要知道,并且正确运用sizeof的去求数组的大小;但是对于字符串,就用库函数strlen()来进行求字符串长度(专用)!



for (i = 0; i < sz; i++)
  {
  printf("%d ", *p);
  p++;
  }

下面进行对数组元素的打印!通过对   : i = 0; i < sz; i++   每次循环的应用,循环sz次,每一次都执行:printf("%d ", *p);       p++;    在这里用了“*”(解引用操作符)目的是通过数组首元素的地址arr逐步找到整个数组,并且打印出来!p++  :是指,每次都往后走一步,去找到下一个数表的元素!


最后的打印结果为:


0a2653c851af460fa595bd959398a8f1.png



上述内容仅仅 是通过指针来打印数组的一种简单方法,下面请看笔者的第二种通过指针打印数组的方法!


下面请看笔者的简单代码:通过指针来打印数组元素!(2)


//通过指针来打印数组元素
#include <stdio.h>
int main()
{
  int arr[] = { 10,9,8,7,6,5,4,3,2,1,0 };
  int* p = arr;
  int i = 0;
  int sz = sizeof(arr) / sizeof(arr[0]);
  for (i = 0; i < sz; i++)
  {
  printf("%d ", *(p + i));
  }
  return 0;
}


在上述带段代码中,笔者仅仅是更改了部分代码,并且更改了数组元素,害拍再用上次代码运行后的结果,紧急避嫌!


在这段代码里面,其实主要更改的内容还是for循环里面的代码!


for (i = 0; i < sz; i++)
  {
  printf("%d ", *(p + i));
  }

每一次的循环都从数组arr(数组的首元素)开始,往后走i步,然后在通过对(p+i)  位置的数组元素来进行“*”解引用,因此可以打印出来该整个数组元素!


最后的打印结果为:


6de278e6d6694ce5bb08e7e842b7e74b.png


通过上述代码,笔者简单的总结下了下面几个数组与指针的关系!


数组与指针的不同:


1.数组与指针不是一个东西!


2.数组能够存放一组数(一段连续的空间),数组的大小取决于元素个数!


3.指针是一个变量,是用来存放地址的(4或8个字节)


数组与指针的联系:


1.数组名是地址(指针)!


2.数组把首元素的地址,交给一个指针变量后,可以通过指针来访问数组!


本文到此就已经将笔者想要表达的内容,已经大致覆盖,对于该文,笔者若有不同的意见,请及时联系笔者进行更改!


相关文章
|
5天前
使用指针访问数组元素
【10月更文挑战第30天】使用指针访问数组元素。
16 3
|
28天前
|
机器学习/深度学习 数据采集 存储
时间序列预测新突破:深入解析循环神经网络(RNN)在金融数据分析中的应用
【10月更文挑战第7天】时间序列预测是数据科学领域的一个重要课题,特别是在金融行业中。准确的时间序列预测能够帮助投资者做出更明智的决策,比如股票价格预测、汇率变动预测等。近年来,随着深度学习技术的发展,尤其是循环神经网络(Recurrent Neural Networks, RNNs)及其变体如长短期记忆网络(LSTM)和门控循环单元(GRU),在处理时间序列数据方面展现出了巨大的潜力。本文将探讨RNN的基本概念,并通过具体的代码示例展示如何使用这些模型来进行金融数据分析。
180 2
|
4天前
使用指针访问数组元素
【10月更文挑战第31天】使用指针访问数组元素。
12 2
|
13天前
|
算法 索引
单链表题+数组题(快慢指针和左右指针)
单链表题+数组题(快慢指针和左右指针)
23 1
|
22天前
|
人工智能 前端开发 JavaScript
拿下奇怪的前端报错(一):报错信息是一个看不懂的数字数组Buffer(475) [Uint8Array],让AI大模型帮忙解析
本文介绍了前端开发中遇到的奇怪报错问题,特别是当错误信息不明确时的处理方法。作者分享了自己通过还原代码、试错等方式解决问题的经验,并以一个Vue3+TypeScript项目的构建失败为例,详细解析了如何从错误信息中定位问题,最终通过解读错误信息中的ASCII码找到了具体的错误文件。文章强调了基础知识的重要性,并鼓励读者遇到类似问题时不要慌张,耐心分析。
|
22天前
|
存储
如何使用指针数组来实现动态二维数组
指针数组可以用来实现动态二维数组。首先,定义一个指向指针的指针变量,并使用 `malloc` 为它分配内存,然后为每个子数组分配内存。通过这种方式,可以灵活地创建和管理不同大小的二维数组。
|
22天前
|
存储
如何通过指针数组来实现二维数组?
介绍了二维数组和指针数组的概念及其区别,详细讲解了如何使用指针数组模拟二维数组,包括定义与分配内存、访问和赋值元素、以及正确释放内存的步骤,适用于需要动态处理二维数据的场景。
|
22天前
|
存储 算法 C语言
C语言:什么是指针数组,它有什么用
指针数组是C语言中一种特殊的数据结构,每个元素都是一个指针。它用于存储多个内存地址,方便对多个变量或数组进行操作,常用于字符串处理、动态内存分配等场景。
|
26天前
|
存储 SQL 分布式计算
湖仓一体架构深度解析:构建企业级数据管理与分析的新基石
【10月更文挑战第7天】湖仓一体架构深度解析:构建企业级数据管理与分析的新基石
41 1
|
28天前
魔法指针 之 二级指针 指针数组
魔法指针 之 二级指针 指针数组
16 1

热门文章

最新文章

推荐镜像

更多