返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >如何分析C++数组和指针的区别与联系
  • 734
分享到

如何分析C++数组和指针的区别与联系

2023-06-26 03:06:04 734人浏览 八月长安
摘要

这期内容当中小编将会给大家带来有关如何分析c++数组和指针的区别与联系,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。前言:一直以来,有很多地方在说到数组和指针时都会说数据就是指针,这种观点也被越来越多的人

这期内容当中小编将会给大家带来有关如何分析c++数组和指针的区别与联系,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

    前言:

    一直以来,有很多地方在说到数组和指针时都会说数据就是指针,这种观点也被越来越多的人接受。本文将主要介绍数组和指针。是不是一样的大家自己理解。如此而已……

    1 数组和指针的概念

    数组:具有固定大小和连续内存空间的相同数据集合。里面的存储的元素具有地址连续性和数据类型相同的特点。
    指针:是指存放内存地址的变量。从0开始。32位系统可访问内存4G,目前64位系统可寻址内存空间为128G。(可能会更大。这个需要硬件资源的支撑。不抬杠)

    2 数组和指针的操作

    2.1 赋值

    数组:对数组元素进行逐个赋值。
    指针:相同类型指针可以直接进行赋值。

    2.2 存储

    数组:从数组的定义就可以知道。数组的内存是连续的。可以在栈上进行定义也可以通过malloc或者new等在堆上进行定义。
    指针:本身是一个变量,指向其对应的类型的变量。指向的地址也是变量的地址,然后在通过该地址获取它指向变量的值。

    2.3 大小

    可以通过sizeof宏进行获得。

    数组:数组的大小通过sizeof(数组名)/sizeof(类型名)获取。
    指针:在32位的操作系统中为4,在64位操作系统中是8。

    2.4 初始化

    数组的初始化方式为:

    //初始化一个双精度型数组double balance[5] = {1.0, 2.0, 3.0, 4.0, 5.0};//初始化一个二维数组int a[5][3]={ {80,75,92}, {61,65,71}, {59,63,70}, {85,87,90}, {76,77,85} };

    指针的初始化方式为:

    //定义一个指向整型变量的指针int *p=new int(0) ;//定义一个指向数组的指针int *p=new int[n];//定义一个指针的指针int **pp=new (int*)[2]; pp[0]=new int[6];pp[1]= new int[10];

    指针数组和数组指针的定义请移步以下文章:C语言简明知识系列十一(下):指针

    3 数组和指针的传参

    C/C++的传参方式可以分为传值型和传址型,传值实际上对将参数进行拷贝,在程序运行中对参数做的任何修改都是在拷贝后的变量产生的,函数退出后不会影响传入参数,传址型恰恰相反,会对原有参数进行修改。数组和指针当做参数传入时基本为引用方式,具体要看代码作者是如何使用。

    3.1 数组的传参

    数组传参分为一维数组和多维数组。当做参数传入时会退化成指针。

    一维数组:

    void Fun(int a[]){    ;}int main(){   int testArray[]={1,2,3};   Fun(testArray);   return 0;}

    如上,当然也可以将Fun函数的参数形式定义为如下形式:

    void Fun(int *a){    ;}

    二维数组:

    void Fun(int (*a)[5]){    ;}int main(){   int testArray[2][5]={       {1,2,3,4,5},       {4,5,6,7,8}   };   Fun(testArray);   return 0;}

    3.2 指针的传参

    如果函数的参数是一个指针。那么可以给函数传递的参数为三种,分别是:指针变量、变量的地址、一个数组名。在这里数组名实际上就是指向数组的首地址。
    指针:

    void Fun_p(int *p){};int main(){   int testArray[]={1,2,3};   int *pIntArray = testArray;   int iValue = 10;   //传递数组名   Fun_p(testArray);   //传递指针变量   Fun_p(pIntArray);   //变量地址   Fun_p(&iValue);   return 0;}

    指针的指针:
     

    void Fun(int **p){    ;}int main(){   int testArray[5]={1,2,3,4,5};   int *pIntArray = testArray;   int iValue = 10;   int *tmpP = &iValue;   //传递指针变量   Fun(&pIntArray);   //变量地址   Fun(&tmpP);   return 0;}

    除了上面介绍外,指针还有函数指针,自然就会有指向函数的指针数组以及指向函数指针的指针。在实际使用时,这些类型的引入在指引我们灵活编程的同时也给我们带来了很大的风险,一旦出错,排除问题和解决问题的复杂度也将增加。在进行指针编程的时候需要谨慎使用。

    上述就是小编为大家分享的如何分析C++数组和指针的区别与联系了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网其他教程频道。

    --结束END--

    本文标题: 如何分析C++数组和指针的区别与联系

    本文链接: https://lsjlt.com/news/306459.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    猜你喜欢
    • 如何分析C++数组和指针的区别与联系
      这期内容当中小编将会给大家带来有关如何分析C++数组和指针的区别与联系,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。前言:一直以来,有很多地方在说到数组和指针时都会说数据就是指针,这种观点也被越来越多的人...
      99+
      2023-06-26
    • C++数组和指针的区别与联系
      目录1 数组和指针的概念2 数组和指针的操作2.1 赋值2.2 存储2.3 大小2.4 初始化3 数组和指针的传参3.1 数组的传参3.2 指针的传参4 总结前言: 一直以来,有很多...
      99+
      2024-04-02
    • C++ 内联函数与函数指针的区别
      内联函数直接展开而不调用,而函数指针存储指向函数地址的变量,允许间接调用函数。 C++ 内联函数和函数指针的区别 什么是内联函数? 内联函数是编译器在编译时直接展开的函数。这意味着内联...
      99+
      2024-04-16
      函数指针 内联函数 c++
    • C语言指针数组和数组指针的区别有哪些
      这篇“C语言指针数组和数组指针的区别有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言指针数组和数组指针的区别有哪些...
      99+
      2023-07-04
    • C语言数组指针和指针数组有什么区别
      这篇文章主要讲解了“C语言数组指针和指针数组有什么区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言数组指针和指针数组有什么区别”吧!区别:指针数组本身是一个数组,数组的元素都是指针,...
      99+
      2023-06-20
    • c语言指针数组和数组指针有什么区别
      C语言中,指针数组和数组指针是两种不同的概念。 指针数组(Pointer Array):指针数组是一个数组,其中的元素都是指针类型...
      99+
      2023-10-27
      c语言
    • 弄清Go语言和C语言指针的区别与联系
      Go语言和C语言是两种流行的编程语言,它们在许多方面都有相似之处,但在指针的概念和用法上有一些明显的区别。本文将深入探讨Go语言和C语言指针的区别与联系,并通过具体的代码示例进行说明。...
      99+
      2024-03-07
      go语言 c语言 指针
    • 指针数组和数组指针的区别是什么
      区别:对指针数组来说,首先它是一个数组,数组的元素都是指针,也就是说该数组存储的是指针,数组占多少个字节由数组本身决定;而对数组指针来说,首先它是一个指针,它指向一个数组,也就是说它是指向数组的指针,在 32 位系统下永远占 4 字节,至于...
      99+
      2023-05-14
      指针数组 数组指针 C语言
    • C/C++数组名与指针的区别是什么
      这篇文章主要讲解了“C/C++数组名与指针的区别是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C/C++数组名与指针的区别是什么”吧!指针是C/C++语言的特色,而数组名与指针有太多的...
      99+
      2023-06-17
    • C++指针和数组:字符和字符串、字符数组的关联和区别
      目录一、字符指针、字符数组字符指针字符数组二、字符串指针三、(字符串)指针数组四、总结字符串的本质就是字符数组,将字符串作为字符数组来处理。字符数组和字符串都可以作为存放字符的数组,...
      99+
      2022-12-23
      C++字符 C++字符串 C++字符数组
    • C语言深入分析数组指针和指针数组的应用
      目录一、数组类型二、定义数据类型三、数组指针四、指针数组五、小结一、数组类型 C语言中的数组有自己特定的类型数组的类型由元素类型和数组大小共同决定 例:int array[5] 的类...
      99+
      2024-04-02
    • C语言和C++:区别与联系全解析
      c++ 语言和 c++ 语言的主要区别在于 c++ 具有动态类型、智能指针、对象模型、函数重载、多态性和异常处理,而 c 语言没有。虽然如此,它们共享相似的语法、编译过程和在系统级编程方...
      99+
      2024-04-04
      c++ c语言
    • 怎样分析cookie与SESSION的区别和联系
      怎样分析cookie与SESSION的区别和联系,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。在一些投票之类的场合,我们往往因为公平的原则要求每人只能投一票,在一些WEB开发中...
      99+
      2023-06-03
    • C++函数指针与C#委托之间有何联系
      C++函数指针与C#委托之间有何联系,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。C#中有一种应用方法叫做委托。其应用方式及实现功能和我们以前为大家介绍的C++...
      99+
      2023-06-17
    • C语言如何使用数组指针与函数指针
      这篇文章主要为大家展示了“C语言如何使用数组指针与函数指针”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C语言如何使用数组指针与函数指针”这篇文章吧。函数指针语法定义一个函数指针,并通过函数指针...
      99+
      2023-06-29
    • Go语言和C语言指针区别对比分析
      Go语言和C语言是两种常用的编程语言,它们在指针的使用上有着一定的区别。本文将通过具体的对比分析以及代码示例来说明Go语言和C语言中指针的区别。 一、概述指针是一种用来存储变量地址的特...
      99+
      2024-03-07
      go语言 c语言 指针
    • 深入浅析C语言与C++的区别与联系
      目录一、C语言是面向过程语言,而C++是面向对象语言1、面向过程和面向对象的区别2、面向过程和面向对象的优缺点面向过程语言面向对象语言二、具体语言上的区别1、关键字的不同2、后缀名不...
      99+
      2024-04-02
    • C语言指针和数组应用实例分析
      这篇文章主要介绍“C语言指针和数组应用实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C语言指针和数组应用实例分析”文章能帮助大家解决问题。一、指针和数组分析-上1.数组的本质数组是一段连续的...
      99+
      2023-06-30
    • 浅析C++浅拷贝与深拷贝的联系和区别
      文章简述 c++中构造函数分为三类:无参构造、带参构造和拷贝构造,其中拷贝构造可分为默认拷贝(浅拷贝)、深拷贝,在程序中,这里我们主要讲浅拷贝和深拷贝的联系和区别。 首先,我们要明白...
      99+
      2024-04-02
    • 如何使用C++数组指针和二维数组
      这篇文章主要介绍“如何使用C++数组指针和二维数组”,在日常操作中,相信很多人在如何使用C++数组指针和二维数组问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用C++数组指针和二维数组”的疑惑有所帮助!...
      99+
      2023-06-25
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作