• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >编程问答 > 指针和数组的区别

指针和数组的区别

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-07

佚名通过本文主要向大家介绍了数组名和指针的区别,说说数组和指针的区别,简述数组与指针的区别,指针数组和数组的区别,引用 指针 数组的区别等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:指针和数组的区别
描述:

fun( int  *a)
{
    sizeof(a)/sizeof(a[0]);//结果为1
}
mian()
{
    int   a[5];
    int   *p = a;
    
    sizeof(p)/sizeof(p[0]);  //结果为1
    p =(int*)malloc(5*sizeof(int));
    sizeof(p)/sizeof(p[0]);  //结果为1
          
          
    sizeof(a)/sizeof(a[0]) ; //结果为5
    fun( a );
}

我知道fun函数中a只是一个指针,并不表示一个数组
但在main函数中使用a,a不也是也个指针。
好像在main中使用a和在fun中是一样的,当使用sizeof,结果却不一样
看来数组和指针还是有很多区别。那p是指针还是数组


解决方案1:

  1. 函数传参的时候,形参不是真正的数组类型,因为数组是不支持复制赋值的。形参虽然可以写出数组的形式,但其实是指针。sizeof对这样的形参计算只会当作指针来计算。在32位系统下,sizeof(p)的值为4。

  2. 而对于数组,c语言规定,数组的长度一定是常量值,在编译的时候,其实就可以知道大小。sizeof不是运行时函数,而是(类似宏的)编译系统内置处理函数,在编译的时候,会计算出sizeof(对象)的大小,然后将'sizeof(对象)'替换成数值,在编译完的文件里是没有sizeof的。

  3. 关于数组,在c/c++中有2种数组,char a[10];,这个数组对象a是在栈上分配的数组,char *p = new char[10];这是在堆上分配的数组。堆上分配的数组一般叫动态数组,长度可以是变量。而栈上的数组,就需要你好好理解这个计算机分配函数栈的机制了。当代码运行进某个函数的时候,就会分配这个函数栈的大小,这个栈的大小一定是在进入的一刻就指定好了,所以早期只能用常量来构造静态数组。但是c99标准开始支持变量,前提是这个变量是一个传入函数的形参,也就是在进入函数的时候可以确定的一个值,当然了,这种时候就不能用sizeof来计算字节大小了。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 指针和数组的区别

相关文章

  • 2017-06-07 javaweb项目开发对外API提供OC调用?
  • 2017-06-07 移动端访问保存在七牛上的添加过七牛防盗链的视频资源被阻止
  • 2017-06-07 七牛处理视频时,能不能保持原视频的宽高比进行截图?
  • 2017-06-07 如何读取文件夹中(包含子文件夹)里所有zip文件的文件名?
  • 2017-06-07 七牛:关于客户端上传的疑问
  • 2017-06-07 (python)anaconda安装出现AttributeError怎么破?
  • 2017-06-07 python里的布尔值无法判断运行后显示错误句法。
  • 2017-06-07 求助,有没有读取txt名字的方法
  • 2017-06-07 python实现自动登录需要用户名和密码的网站
  • 2017-06-07 如何去除html源码中的标签?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • python多线程Python多继承中的super函数?
    • Theoperationcouldn’tbecompleted
    • 给学习Python的童鞋推荐壹个巩固基础的网站:http://mypythonquizcom/
    • DSP中关于堆栈的使用
    • PHP爬取网页的时候遇到JS定时跳转
    • python多维元组如何全部转换成列表
    • phpapi调用问题
    • RichFaces的Tree组件,如何使其一开始就呈现展开状态?
    • (golang)go中如何把发送到模板的值遍历出来
    • 将一个数随机分为n份,如何实现?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有