我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何分析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++数组和指针的区别与联系了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网行业资讯频道。

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

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

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

    C++ 内联函数与函数指针的区别

    内联函数直接展开而不调用,而函数指针存储指向函数地址的变量,允许间接调用函数。C++ 内联函数和函数指针的区别什么是内联函数?内联函数是编译器在编译时直接展开的函数。这意味着内联函数的调用不会导致实际的函数调用,而是直接将函数代码插入到
    C++ 内联函数与函数指针的区别
    2024-04-16

    C语言指针数组和数组指针的区别有哪些

    这篇“C语言指针数组和数组指针的区别有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言指针数组和数组指针的区别有哪些
    2023-07-04

    弄清Go语言和C语言指针的区别与联系

    Go语言和C语言是两种流行的编程语言,它们在许多方面都有相似之处,但在指针的概念和用法上有一些明显的区别。本文将深入探讨Go语言和C语言指针的区别与联系,并通过具体的代码示例进行说明。首先,我们来看看C语言中指针的基本概念和用法。在C语言
    弄清Go语言和C语言指针的区别与联系
    2024-03-07

    C++指针和数组:字符和字符串、字符数组的关联和区别

    字符串是一种重要的数据类型,但是c语言并没有显示的字符串数据类型,因为字符串以字符串常量的形式出现或者存储于字符数组中。在C++标准模板库(STL)中提供了string类,实现了对字符串的封装。
    2022-12-23

    C/C++数组名与指针的区别是什么

    这篇文章主要讲解了“C/C++数组名与指针的区别是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C/C++数组名与指针的区别是什么”吧!指针是C/C++语言的特色,而数组名与指针有太多的
    2023-06-17

    怎样分析cookie与SESSION的区别和联系

    怎样分析cookie与SESSION的区别和联系,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。在一些投票之类的场合,我们往往因为公平的原则要求每人只能投一票,在一些WEB开发中
    2023-06-03

    C++ 函数中的 lambda 表达式与函数指针有何区别?

    lambda 表达式和函数指针都是 c++++ 中封装代码的机制,但它们在实现和特性上有所不同:实现方式:函数指针指向函数的内存地址,而 lambda 表达式是内联的匿名代码块。返回类型:函数指针的返回类型固定,而 lambda 表达式的返
    C++ 函数中的 lambda 表达式与函数指针有何区别?
    2024-04-25

    如何分析C/C++指针、函数、结构体和共用体

    如何分析C/C++指针、函数、结构体和共用体,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。指针变量与地址变量给谁用的?变量是对某一块空间的抽象命名。变量名就是你抽象出来的某
    2023-06-28

    如何处理 C++ 函数指针的析构和生命周期管理?

    在 c++++ 中,函数指针需要适当的析构和生命周期管理。可以通过以下方式实现:手动析构函数指针,释放内存。使用智能指针,如 std::unique_ptr 或 std::shared_ptr,自动管理函数指针的生命周期。将函数指针绑定到对
    如何处理 C++ 函数指针的析构和生命周期管理?
    2024-04-17

    如何分析c++数组名称和sizeof的问题

    这篇文章将为大家详细讲解有关如何分析c++数组名称和sizeof的问题,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一维数组名称的用途:可以统计整个数组在内存中的长度可以获取数组在内存中的首
    2023-06-28

    如何理解HTML开发中.html和.htm和.shtml以及.shtm的区别与联系

    如何理解HTML开发中.html和.htm和.shtml以及.shtm的区别与联系,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。大家都知道,我们每天浏览的网页或者网站或者w
    2023-06-08

    如何分析Linux系统目录和文件权限的区别

    如何分析Linux系统目录和文件权限的区别,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。文件和目录的权限表面看很简单,但真正弄懂还是得花点心思。文件权限比较简单,但有几点也
    2023-06-28

    编程热搜

    • Python 学习之路 - Python
      一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
      Python 学习之路 - Python
    • chatgpt的中文全称是什么
      chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
      chatgpt的中文全称是什么
    • C/C++中extern函数使用详解
    • C/C++可变参数的使用
      可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
      C/C++可变参数的使用
    • css样式文件该放在哪里
    • php中数组下标必须是连续的吗
    • Python 3 教程
      Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
      Python 3 教程
    • Python pip包管理
      一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
      Python pip包管理
    • ubuntu如何重新编译内核
    • 改善Java代码之慎用java动态编译

    目录