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

C++数组和指针的区别与联系

2024-04-02 19:04:59 108人浏览 泡泡鱼
摘要

目录1 数组和指针的概念2 数组和指针的操作2.1 赋值2.2 存储2.3 大小2.4 初始化3 数组和指针的传参3.1 数组的传参3.2 指针的传参4 总结前言: 一直以来,有很多

前言:

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

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;
}

4 总结

除了上面介绍外,指针还有函数指针,自然就会有指向函数的指针数组以及指向函数指针的指针。在实际使用时,这些类型的引入在指引我们灵活编程的同时也给我们带来了很大的风险,一旦出错,排除问题和解决问题的复杂度也将增加。在进行指针编程的时候需要谨慎使用。
函数和数组既有相同点,也有不各自独特之处。细思之,一些所谓函数既指针的说法需要谨慎判断。切勿人云亦云!

到此这篇关于c++数组和指针的区别与联系的文章就介绍到这了,更多相关C++数组和指针的区别内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

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

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

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

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • C++数组和指针的区别与联系
    目录1 数组和指针的概念2 数组和指针的操作2.1 赋值2.2 存储2.3 大小2.4 初始化3 数组和指针的传参3.1 数组的传参3.2 指针的传参4 总结前言: 一直以来,有很多...
    99+
    2022-11-12
  • 如何分析C++数组和指针的区别与联系
    这期内容当中小编将会给大家带来有关如何分析C++数组和指针的区别与联系,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。前言:一直以来,有很多地方在说到数组和指针时都会说数据就是指针,这种观点也被越来越多的人...
    99+
    2023-06-26
  • C语言指针数组和数组指针的区别有哪些
    这篇“C语言指针数组和数组指针的区别有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言指针数组和数组指针的区别有哪些...
    99+
    2023-07-04
  • C/C++数组名与指针的区别是什么
    这篇文章主要讲解了“C/C++数组名与指针的区别是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C/C++数组名与指针的区别是什么”吧!指针是C/C++语言的特色,而数组名与指针有太多的...
    99+
    2023-06-17
  • c语言指针数组和数组指针有什么区别
    C语言中,指针数组和数组指针是两种不同的概念。 指针数组(Pointer Array):指针数组是一个数组,其中的元素都是指针类型...
    99+
    2023-10-27
    c语言
  • C语言数组指针和指针数组有什么区别
    这篇文章主要讲解了“C语言数组指针和指针数组有什么区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言数组指针和指针数组有什么区别”吧!区别:指针数组本身是一个数组,数组的元素都是指针,...
    99+
    2023-06-20
  • C++指针和数组:字符和字符串、字符数组的关联和区别
    目录一、字符指针、字符数组字符指针字符数组二、字符串指针三、(字符串)指针数组四、总结字符串的本质就是字符数组,将字符串作为字符数组来处理。字符数组和字符串都可以作为存放字符的数组,...
    99+
    2022-12-23
    C++字符 C++字符串 C++字符数组
  • 指针数组和数组指针的区别是什么
    区别:对指针数组来说,首先它是一个数组,数组的元素都是指针,也就是说该数组存储的是指针,数组占多少个字节由数组本身决定;而对数组指针来说,首先它是一个指针,它指向一个数组,也就是说它是指向数组的指针,在 32 位系统下永远占 4 字节,至于...
    99+
    2023-05-14
    指针数组 数组指针 C语言
  • php数组指针和指针数组有什么区别
    本篇内容主要讲解“php数组指针和指针数组有什么区别”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php数组指针和指针数组有什么区别”吧!区别指针数组本身是一个数组,数组的元素都是指针,即数组存...
    99+
    2023-06-20
  • C++函数指针与C#委托之间有何联系
    C++函数指针与C#委托之间有何联系,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。C#中有一种应用方法叫做委托。其应用方式及实现功能和我们以前为大家介绍的C++...
    99+
    2023-06-17
  • C语言的数组指针与函数指针详解
    目录前言函数指针语法数组指针与指针数组总结前言 数组指针和函数指针都是C语言比较难的知识点,尤其是函数指针,并且函数指针在开发中有着巨大的作用。 函数指针语法 定义一个函数指针,并通...
    99+
    2022-11-13
  • C++中指针常量与常量指针的区别是什么
    在C++中,指针常量和常量指针是不同的概念。1. 指针常量(Pointer to constant):指针本身是一个常量,即指针的值...
    99+
    2023-08-16
    C++
  • 指针与数组的关联3 --声明
        当我们在调用函数时,传递数组,就是把数组首元素的地址传递给函数,本质也就是给函数传递了一个指针变量。这时候我们会想那么数组是不是跟指针是一样的。为了验证,我们可以给一个项目里创建一个新的源文件,里面创建一个指针变量和是个数组,然后在...
    99+
    2023-01-31
    数组 指针 声明
  • 【JAVA】JAVA与C++的区别与联系
    个人主页:【😊个人主页】 系列专栏:【❤️初识JAVA】 文章目录 前言两方介绍C++JAVA 不同==|Java不支持指针、模板、指针重载、联合等|====|支持析构函数|====|条件编译和包含|...
    99+
    2023-08-16
    java c++ 开发语言
  • 简单总结C++中指针常量与常量指针的区别
    C++中指针常量与常量指针有以下区别:1. 指针常量(Pointer to constant):指针常量是一个指针,它的值是一个常量...
    99+
    2023-08-15
    C++
  • C语言中指针常量和常量指针的区别
    在面试中我们经常会被面试官问到什么是常量指针,什么又是指针常量。 指针常量就是指针本身是常量,指针里面所存储的内容(内存地址)是常量,不能改变。但是,对应内存地址里存的内容是可以通过...
    99+
    2022-11-12
  • C++中指针与引用的区别是什么
    这篇文章主要介绍了C++中指针与引用的区别是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++中指针与引用的区别是什么文章都会有所收获,下面我们一起来看看吧。1、指针的声明上文中提到,指针和其所指向的变量...
    99+
    2023-06-19
  • Java引用与C指针的区别是什么
    Java引用与C指针的区别如下:现象指针在运行时可以改变其所指向的值(地址)即指向其它变量,而引用一旦和某个对象绑定后就不能再改变,总是指向最初的对象。编译程序在编译时分别将指针和引用添加到符号表上,符号表上记录的是变量名以及变量所对应的地...
    99+
    2022-03-17
    Java 引用 C 指针 区别
  • C++指针与引用的区别案例详解
    C++中指针和引用的区别 从概念上讲。指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变。 而引用是...
    99+
    2022-11-12
  • C++中指针与引用的区别有哪些
    这篇文章主要介绍C++中指针与引用的区别有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、指针的声明上文中提到,指针和其所指向的变量就像硬币的两面,因此通过取址符号"&"我们可以找到...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作