热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

为什么指针变量可以直接当数组名来用?

下面的程序中,ve先被定义为int类型的指针但是malloc之后,后面ve直接当做数组名来用了,请问为什么可以这样操作?正常不是应该用ve++来遍历动态地址空间吗?
下面的程序中,
ve先被定义为int类型的指针
但是malloc之后,后面ve直接当做数组名来用了,请问为什么可以这样操作?
正常不是应该用ve++来遍历动态地址空间吗?






15 个解决方案

#1


ve[j]==*(ve+j)
两边取地址:
&ve[j]==ve+j
&ve[0]==ve+0==ve  即 数组名ve等于数组首元素的地址
以上就是数组和指针的变换公式

#2


引用 1 楼 u010165006 的回复:
ve[j]==*(ve+j)
两边取地址:
&ve[j]==ve+j
&ve[0]==ve+0==ve  即 数组名ve等于数组首元素的地址
以上就是数组和指针的变换公式


谢谢,很详细的计算
我再认真看看,谢谢^_^

#3


你在哪看到说[]运算符只有数组类型可以使用

#4


分配的内存是连续的,数组名即是首地址,[]也是取连续内存的地址

#5


语法糖而已!

#6


其实a[i] 和 i[a]是等价的,你不信?
char a[10] = "hello";
cout << a[2] << endl;
cout << 2[a] << endl;
你猜猜这是为什么?

#7


引用 6 楼 u010087712 的回复:
其实a[i] 和 i[a]是等价的,你不信?
char a[10] = "hello";
cout << a[2] << endl;
cout << 2[a] << endl;
你猜猜这是为什么?


但是这里的情况不一样
这里是
a[ve]变成了ve[j]   j是int类型






#8


http://blog.csdn.net/paschen/article/details/47315449

#9


因为 
p[i] 这种形式是指针的专利
数组不过是拥有一批同一类型元素的集合
这些元素连续排列,中间无缝隙。
因此用指针可以索引所有数组元素
所以数组也可以用 a[i];
此时数组名其实是当作指针用的

#10


反了。

通常情况下数组可以自动转换为指针,当作指针来用。

#11


A[B]
*(A+B)
*(B+A)
B[A]
//以上四行等价

"abc"[1]
*("abc"+1)
*(1+"abc")
1["abc"]
//以上四行等价

#12


引用 楼主 TheBigBangWOW 的回复:
下面的程序中,
ve先被定义为int类型的指针
但是malloc之后,后面ve直接当做数组名来用了,请问为什么可以这样操作?
正常不是应该用ve++来遍历动态地址空间吗?

数组在内存里面是什么样子的?

假如有1000个B的连续数据
它可以是char n[1000]
可以是char n[10][100]
还可以是char n[10][10][10]
不要拘泥于数据的类型,你最该关着的是对内存里面的数据操作正确与否。

#13


[] 数组标记 属于 “语法糖” 他的用于是简化编码的书写。

a[i] 在编译的时候会被编译器 复原成 *(a + 1),他只是一种指针操作简化的写法。
你甚至可以认为C语言中没有数组。
这也是为什么a[i] 与 i[a] 相等的原因。

#14


引用 5 楼 pengzhixi 的回复:
语法糖而已!


嗯嗯,如果在语言上较真,那你就输了。
运用语言,完成任务才是王道。

#15


谢谢各位··········

推荐阅读
  • C语言常量与变量的深入理解及其影响
    本文深入讲解了C语言中常量与变量的概念及其深入实质,强调了对常量和变量的理解对于学习指针等后续内容的重要性。详细介绍了常量的分类和特点,以及变量的定义和分类。同时指出了常量和变量在程序中的作用及其对内存空间的影响,类似于const关键字的只读属性。此外,还提及了常量和变量在实际应用中可能出现的问题,如段错误和野指针。 ... [详细]
  • 本文探讨了C语言中指针的应用与价值,指针在C语言中具有灵活性和可变性,通过指针可以操作系统内存和控制外部I/O端口。文章介绍了指针变量和指针的指向变量的含义和用法,以及判断变量数据类型和指向变量或成员变量的类型的方法。还讨论了指针访问数组元素和下标法数组元素的等价关系,以及指针作为函数参数可以改变主调函数变量的值的特点。此外,文章还提到了指针在动态存储分配、链表创建和相关操作中的应用,以及类成员指针与外部变量的区分方法。通过本文的阐述,读者可以更好地理解和应用C语言中的指针。 ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了在Windows系统上使用C语言命令行参数启动程序并传递参数的方法,包括接收参数程序的代码和bat文件的编写方法,同时给出了程序运行的结果。 ... [详细]
  • C语言判断正整数能否被整除的程序
    本文介绍了使用C语言编写的判断正整数能否被整除的程序,包括输入一个三位正整数,判断是否能被3整除且至少包含数字3的方法。同时还介绍了使用qsort函数进行快速排序的算法。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 本文详细介绍了GetModuleFileName函数的用法,该函数可以用于获取当前模块所在的路径,方便进行文件操作和读取配置信息。文章通过示例代码和详细的解释,帮助读者理解和使用该函数。同时,还提供了相关的API函数声明和说明。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • OO第一单元自白:简单多项式导函数的设计与bug分析
    本文介绍了作者在学习OO的第一次作业中所遇到的问题及其解决方案。作者通过建立Multinomial和Monomial两个类来实现多项式和单项式,并通过append方法将单项式组合为多项式,并在此过程中合并同类项。作者还介绍了单项式和多项式的求导方法,并解释了如何利用正则表达式提取各个单项式并进行求导。同时,作者还对自己在输入合法性判断上的不足进行了bug分析,指出了自己在处理指数情况时出现的问题,并总结了被hack的原因。 ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
author-avatar
雅茹敬俐6999
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有