首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

彻底弄懂C语言数组名

先定义一个一维数组 int a[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 一、数组名是什么 数组名的值是数组首元素的指针常量。...数组名不是指针,但大多数使用到数组名的地方,编译器都会把数组名隐式转换成一个指向数组首元素的指针来处理。...只有两种情况下例外: 第一种是对数组名使用sizeof运算符 sizeof(a) 这将会得到整个数组所占的内存大小,a是长度为10的int(4字节)数组,运算结果是40 第二种是对数组名取地址 &a 运算结果是数组的地址...二、下标引用 除了上面说的两种例外,其他情况下编译器都将数组名隐式转换成指针常量。...三、数组的类型 以数组a为例,a的类型是: int * 数组的类型取决于数组元素的类型:如果它们是int类型,那么数组名的类型就是“指向int的常量指针”;如果它们是其他类型,那么数组名的类型就是“指向其他类型的常量指针

47820

C++ 快速理解数组名为何是常指针

动态分配实例 此处使用的开发环境:visual studio 2019 下面我们通过C++中通过new来进行动态内存分配的实例带大家快速理解数组名为何是常指针 int *p=new int[n]; delete...下面是通过移动指针指向的整型空间对动态分配空间(可以将此处分配的n个整型内存空间理解为储存n个整型变量的数组)进行逐一赋值;循环赋值后输出该空间存储的值时,却无法正常输出 通过以下代码,说明该指针p不是像数组名一样的常指针...;后文的“数组指针实例”中详细说明 此处对数组也进行上面类似的操作,发现会报错;更加说明数组名是常指针 小结:数组名本身就是一个常指针,而声明的非常指针虽然可以改变其指向的内存空间,但用下标法进行赋值...、输出时可以看作是“常指针”,实际不是 数组指针实例 概念:一个指向数组的内存空间的指针,通常通过获取数组首地址(也可用数组名表示,或&数组名[0])来绑定指针与数组;另外,数组名是一个常指针,而数组指针通常是一个变量

26340

CC++:使用二维数组名传参

在 C 中,当二维数组作为实参向形参传递时,参数会自动转化为指针类型,这时如果我们使用二维数组名传参,我们就不得不在函数形参中指明二维数组的第一维的长度,否则会导致编译错误。...这时如果想直接使用二维数组名传参,而二维数组却又是动态的,也就是二维数组的维度是不确定的,那我们得专门为不同维度长度的二维数组创建具有对应维度的形参的函数。这样太麻烦了。...而在 C++ 中,我们可以巧用模板来推导二维数组的类型(可以自动确定二维数组的维度长度),这样我们就可以做到直接使用二维数组名传参。...可以看到,尽管二维数组的维度是不同的,但我们可以使用同一个函数进行操作,并且直接使用二维数组名进行传参。 使用这种方法仍旧避免不了一个环节,那就是指明二维数组的各个维度的长度。...不过,对于不同的二维数组,能够往同一个函数直接使用数组名传参并进行操作,已经很是方便了。

1.7K20

C++数组名作函数参数 | 求3*4矩阵中最大的值

C++也可以用数组名作函数参数, 此时实参与形参都用数组名。 形参可以是数组名,也可以是指针变量,它们用来 接收实参传来的地址。如果形参是数组名,它代表 的是形参数组首元素的地址。...在调用函数时,将实 参数组首元素的地址传递给形参数组名。这样,实 参数组和形参数组就共占同一段内存单元。 在C++中,数组名可以作实参和形参,传递的是数组的起始地址。 ...C++用数组名作函数参数有三点需要读者注意: 如果函数实参是数组名,形参也应为数组名,形参不能声明为普 通变量。实参数组与形参数组类型应一致,如不一致,结果将出错。...数组名代表数组首元素的地址,并不代表数组中的全部元素,因此用数组名作函数实参时,不是把实参数组的值传递给形参, 而只是将实参数组首元素的地址传递给形参。...C++用多维数组名作函数参数 如果用二维数组名作为实参和形参,在对形参数组 声明时,必须指定第二维的大小,且应与实参的第二维的大小相同,第一维的大小可以指定, 也可以不指定。

1.5K2828

说出来你们可能不信,但是数组名确实不是指针常量

这篇是一篇C语言劝退流教学文,看不懂的同学应该是劝退教学流的目标对象 (写完了才想起来注一下,本文提到的“数组”和“数组名”字样,指的是数组左值表达式(array lvalue expression)...或数组声明(array declaration)所声明的变量) 首先,数组名不是常量指针,从两方面: 类型方面,数组的类型是type[size],和常量指针类型type* const不同 使用方面,...其次,为什么很多老师都说数组是常量指针 他们不了解C语言的类型系统和隐式转换规则 他们怕下面的人听不懂 他们解释不清为什么数组名不能进行赋值或者++之类的运算而指针可以 切入正题,我们从类型系统和隐式转换规则来讲...) 数组名在大部分情况下会隐式转换为首元素指针右值,除了(参见 Implicit conversions) sizeof运算的时候 取址的时候 用字符串字面量初始化字符数组的时候 以及C11的_Alignof...这一套过程,用那个什么数组名是常量指针的说法,是解释不来的。

1.5K60

C语言:数组作为函数参数(数组元素做实参,数组名称做形参)

a:b; } 数组名称做形参 当数组作为形参时,虽然形式上还是数组,比如void sort(int arr[ ]),但是并不意味着真正建立了一个包含和实参数组大小相同的数组,在调用函数时也不对它分配存储单元...,只是用array[ ]这样的数组形式表示array是一维数组名,来接收实参传来的地址,因此array中的方括号的数值并无实际作用,编译器对数组维度进行忽略。...void fun(int a[]){ for(int i=0;i<=9;i++) a[i]=a[i]+10; } 注意: 用数组元素做实参时,向形参变量传递的是数组元素的值 用数组名做函数实参时...数组名作为函数实参传递时,函数定义处作为接收参数的数组类型形参既可以指定长度也可以不指定长度。 数组元素作为函数实参传递时,数组元素类型必须与形参数据类型一致 。

2.5K20

js给数组添加数据的方式js 向数组对象中添加属性和属性值

参考:https://www.cnblogs.com/ayaa/p/14732349.html js给数组添加数据的方式有以下几种: 直接利用数组下标赋值来增加(数组的下标起始值是0) 例,先存在一个有...arr);  此时输出的结果是[ 1, 2, 3 ] let arr=[1,2,3]; arr[3]=5; console.log(arr);  此时的输出结果是[ 1, 2, 3, 5 ]; 通过 数组名...[数组名.length] 来增加 let arr=[1,2,3]; arr[arr.length]=5; console.log(arr);  此时的输出结果是[ 1, 2, 3, 5 ]; 通过 数组名...=[1,2,3]; // arr.unshift(5); arr.unshift(5,8,9); console.log(arr);  此时的输出结果是[ 5, 8, 9, 1, 2, 3 ]; 用 数组名...arr.splice(3,0,7,8,9) console.log(arr);  此时的输出结果是[ 1, 2, 3, 7, 8, 9 ]; 因为举例是从第3个下标开始,所以是直接在数组的最后开始增加数组内容; js

22.8K20

【C 语言】数组 ( 多维数组本质 | n 维数组名称本质 是 n-1 级数组指针 )

文章目录 总结 一、多维数组本质 二、完整代码示例 总结 n 维数组名称本质 是 n-1 级数组指针 一、多维数组本质 ---- 给定多维数组 : // 声明一个多维数组 int array...= 6422200 , 往后跳了 12 字节 // 该二维数组 2 行 3 列 , 每行有 3 个 int 值 , 12 字节 // 这是跳转了 一列 的内存大小 // 多维数组名...相当于一个 数组指针 // 二维数组名 相当于一个 一维数组指针 // 三维数组名 相当于一个 二维数组指针 printf("array = %d, array + 1 = %...= 6422200 , 往后跳了 12 字节 // 该二维数组 2 行 3 列 , 每行有 3 个 int 值 , 12 字节 // 这是跳转了 一列 的内存大小 // 多维数组名...相当于一个 数组指针 // 二维数组名 相当于一个 一维数组指针 // 三维数组名 相当于一个 二维数组指针 printf("array = %d, array + 1 = %

74020

JavaScript数组基础及实例

js数组 和var i=1;这样的简单存储一样是js中的一种数据结构,是专门用来存储多个数据的一种数据结构。...摘:数组是一组数据的集合,其表现形式就是内存中的一段连续的内存地址,数组名称其实就是连续内存地址的首地址。...数组也是分为强类型和弱类型的: 强类型语言数组:1.内容是连续的 2.指定数组的时候要给一个长度 3.要规定存储数据类型 弱类型语言数组:可以不连续,不用指定长度,可以存储任何类型长度 js数组是弱类型数组...js数组的定义方式: //数组的定义方式 //第一种 var arr = new Array(); arr[0]=1; arr[1]=2; arr[2]=...arr.push();是数组的一种方法,用来向数组添加数据 arr.length是数组的方法,代表数组的长度,表示数组下有几个元素 数组名.属性名 数组名.方法名() JS数组中可以存储任意类型的数据

77090

JavaScript——数组

//普通变量一次只能存储一个值 var num = 10; //数组一次可以存储多个值 var arr = [1, 2, 3, 4, 5]; 创建数组 JS中创建数组有俩种方式:...利用new创建数组 利用数组字面量创建数组 利用new创建数组: var 数组名 = new Array(); var arr = new Array(); //创建了一个空的数组 利用数组字面量创建数组...: //使用数组字面量方式创建空的数组 var 数组名 = []; //使用数组字面量方式创建带初始值的数组 var 数组名 = ['小白', '小黑', '小红'];...访问数组元素 数组的索引(下标):用来访问数组元素的序号(数组下标从0开始) 数组可以通过索引来访问(得到)、设置、修改对应的数组元素,我们可以通过”数组名[索引]“的形式来获取数组中的元素。...输出的时候 arr[i],i计数器当索引号来用 数组的长度:使用 数组名.length可以访问数组元素的数组。

62210

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券