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

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 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.数组把首元素的地址,交给一个指针变量后,可以通过指针来访问数组!


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


相关文章
|
2月前
使用指针访问数组元素
【10月更文挑战第30天】使用指针访问数组元素。
41 3
|
2月前
|
数据采集 自然语言处理 搜索推荐
基于qwen2.5的长文本解析、数据预测与趋势分析、代码生成能力赋能esg报告分析
Qwen2.5是一款强大的生成式预训练语言模型,擅长自然语言理解和生成,支持长文本解析、数据预测、代码生成等复杂任务。Qwen-Long作为其变体,专为长上下文场景优化,适用于大型文档处理、知识图谱构建等。Qwen2.5在ESG报告解析、多Agent协作、数学模型生成等方面表现出色,提供灵活且高效的解决方案。
203 49
|
2月前
|
测试技术 开发者 Python
使用Python解析和分析源代码
本文介绍了如何使用Python的`ast`模块解析和分析Python源代码,包括安装准备、解析源代码、分析抽象语法树(AST)等步骤,展示了通过自定义`NodeVisitor`类遍历AST并提取信息的方法,为代码质量提升和自动化工具开发提供基础。
73 8
|
1月前
|
调度 开发者
核心概念解析:进程与线程的对比分析
在操作系统和计算机编程领域,进程和线程是两个基本而核心的概念。它们是程序执行和资源管理的基础,但它们之间存在显著的差异。本文将深入探讨进程与线程的区别,并分析它们在现代软件开发中的应用和重要性。
59 4
|
2月前
|
存储 程序员 编译器
C 语言数组与指针的深度剖析与应用
在C语言中,数组与指针是核心概念,二者既独立又紧密相连。数组是在连续内存中存储相同类型数据的结构,而指针则存储内存地址,二者结合可在数据处理、函数传参等方面发挥巨大作用。掌握它们的特性和关系,对于优化程序性能、灵活处理数据结构至关重要。
|
2月前
|
存储 C语言 计算机视觉
在C语言中指针数组和数组指针在动态内存分配中的应用
在C语言中,指针数组和数组指针均可用于动态内存分配。指针数组是数组的每个元素都是指针,可用于指向多个动态分配的内存块;数组指针则指向一个数组,可动态分配和管理大型数据结构。两者结合使用,灵活高效地管理内存。
|
2月前
|
容器
在使用指针数组进行动态内存分配时,如何避免内存泄漏
在使用指针数组进行动态内存分配时,避免内存泄漏的关键在于确保每个分配的内存块都能被正确释放。具体做法包括:1. 分配后立即检查是否成功;2. 使用完成后及时释放内存;3. 避免重复释放同一内存地址;4. 尽量使用智能指针或容器类管理内存。
|
2月前
|
存储 NoSQL 编译器
C 语言中指针数组与数组指针的辨析与应用
在C语言中,指针数组和数组指针是两个容易混淆但用途不同的概念。指针数组是一个数组,其元素是指针类型;而数组指针是指向数组的指针。两者在声明、使用及内存布局上各有特点,正确理解它们有助于更高效地编程。
|
21天前
|
存储 程序员 C++
深入解析C++中的函数指针与`typedef`的妙用
本文深入解析了C++中的函数指针及其与`typedef`的结合使用。通过图示和代码示例,详细介绍了函数指针的基本概念、声明和使用方法,并展示了如何利用`typedef`简化复杂的函数指针声明,提升代码的可读性和可维护性。
55 0
|
2月前
|
存储 人工智能 算法
数据结构实验之C 语言的函数数组指针结构体知识
本实验旨在复习C语言中的函数、数组、指针、结构体与共用体等核心概念,并通过具体编程任务加深理解。任务包括输出100以内所有素数、逆序排列一维数组、查找二维数组中的鞍点、利用指针输出二维数组元素,以及使用结构体和共用体处理教师与学生信息。每个任务不仅强化了基本语法的应用,还涉及到了算法逻辑的设计与优化。实验结果显示,学生能够有效掌握并运用这些知识完成指定任务。
62 4

推荐镜像

更多