0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

C语言指针和数组的区别

C语言编程学习基地 来源:C语言编程学习基地 作者:C语言编程学习基地 2022-07-18 16:29 次阅读

C语言教程中我们使用通过数组名通过偏移和指针偏移都可以遍历数组,那么指针和数组到底有什么区别??

由于数组中的数据在内存中都是连续存放的,数组名默认就是数组的首地址,也是一个特殊的指针;

6b8dbdac-0670-11ed-ba43-dac502259ad0.jpg

二.指针和数组区别

1.通过 sizeof 获取大小

不管是数组还是指针变量,计算大小的时候都可以通过sizeof函数,注意两者使用的区别:

a.计算数组大小

数组所占存储空间的内存:sizeof(数组名);

数组的大小:sizeof(数组名)/sizeof(数据类型)

6ba05f5c-0670-11ed-ba43-dac502259ad0.png

b.计算指针大小

在 32 位平台下,无论指针的类型是什么,sizeof(指针名)都是 4 ,在 64 位平台下,无论指针的类型是什么,sizeof(指针名)都是 8 ;

6bb8a918-0670-11ed-ba43-dac502259ad0.png

由此可见,sizeof函数计算指针大小的时候,与数据变量类型无关,x86平台下指针大小始终为4,x64平台下指针大小始终为8;

2.指针和数组赋值方式不同

a.指针赋值

指针很灵活,它可以指向任意类型的数据。指针的类型说明了它所指向地址空间的内存。

b.数组赋值

数组在内存中是连续存放的,开辟一块连续的内存空间。数组可以根据数组的下进行访问,多维数组实际上由多个一维数组够成,数组的赋值这里不再重复讲解。

3.指针是指针变量,数组是指针常量

常量:常量的值始终是固定的,不能被修改;

变量:变量的值可以任意修改;

那么指针和数组区别在哪呢?

6bce3b66-0670-11ed-ba43-dac502259ad0.png

写法一是正确的,常规操作;

写法二是错误的,数组名默认指向数组的首地址,是不能背修改的;

总结:所以说数组是指针常量,不能被修改;指针是变量可以被随意修改。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    180

    文章

    7521

    浏览量

    127404
  • 指针
    +关注

    关注

    1

    文章

    469

    浏览量

    70360
  • 数组
    +关注

    关注

    1

    文章

    407

    浏览量

    25593

原文标题:C语言基础知识:指针和数组的区别是什么?

文章出处:【微信号:cyuyanxuexi,微信公众号:C语言编程学习基地】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    C语言数组名和指针

    指针是C/C++语言的特色,而数组名与指针有太多的相似,甚至很多时候,数组名可以作为指针使用。于
    发表于 08-27 17:48 598次阅读

    C语言指针和数组的错误用法

    上线后出现一个异常。我才觉得我对指针只是学废了。找了一些指针和数组的博客资料,记录一下。希望下次不会再犯类似的错误。
    发表于 09-28 09:12 577次阅读

    C语言数组指针区别

    大家好,我是嵌入式老林,从事嵌入式软件开发多年,今天分享的内容是C语言数组指针区别,希望能对你有所帮助。
    发表于 07-11 12:40 272次阅读
    C<b class='flag-5'>语言</b><b class='flag-5'>数组</b>和<b class='flag-5'>指针</b>的<b class='flag-5'>区别</b>

    C语言中指针数组和数组指针区别

    指针和数组之间存在着紧密的关系。在本文中,我们将探讨指针和数组的关系、指针算术和数组遍历、多维
    发表于 08-17 15:29 275次阅读

    C语言——指针数组和函数

    C语言——指针数组和函数基本解释   1、指针的本质是一个与地址相关的复合类型,它的值是数据存放的位置(地址);
    发表于 04-20 15:25

    指针数组和数组指针有什么区别和联系呢

    什么是指针数组和数组指针指针数组和数组
    发表于 12-24 06:55

    指针和数组都是C语言的精髓所在 两者有何联系区别

    指针和数组都是C语言的精髓所在,对于很多C程序员来说,如果你问这样一个问题:数组指针有什么区别
    的头像 发表于 05-27 14:51 2988次阅读
    <b class='flag-5'>指针</b><b class='flag-5'>和数组</b>都是C<b class='flag-5'>语言</b>的精髓所在 两者有何联系<b class='flag-5'>区别</b>

    详谈数组指针区别与联系

    详谈数组指针区别与联系
    的头像 发表于 06-29 15:18 2.2w次阅读
    详谈<b class='flag-5'>数组</b>和<b class='flag-5'>指针</b>的<b class='flag-5'>区别</b>与联系

    指针数组和数组指针区别

    这里我们区分两个重要的概念:指针数组数组指针
    的头像 发表于 06-29 15:30 1.9w次阅读
    <b class='flag-5'>指针</b><b class='flag-5'>数组</b><b class='flag-5'>和数组</b><b class='flag-5'>指针</b>的<b class='flag-5'>区别</b>

    二维数组数组指针以及指针数组

    二维数组数组指针以及指针数组
    的头像 发表于 08-16 09:02 2250次阅读

    【C语言进阶】“数组指针”和“指针数组”都是啥跟啥?

    【C语言进阶】“数组指针”和“指针数组”都是啥跟啥?
    的头像 发表于 08-31 13:21 1667次阅读

    C语言中的char数组和char指针有什么区别

    让我们通过下面的例子,来了解 C语言中字符数组和字符指针之间的区别
    的头像 发表于 01-29 16:35 1782次阅读

    C语言数组元素的指针

    C语言调用函数时虚实结合的方法都是采用“值传递”方式,当用变量名作为函数参数时传递的是变量的值,当用数组名作为函数参数时。 由于数组名代表的是数组元素地址,因此传递的值是地址,所
    的头像 发表于 03-10 14:45 577次阅读

    C语言中什么是指针数组

    在C语言中一个数组,若其元素均为指针类型数据,称为指针数组,也就是说,指针
    的头像 发表于 03-10 15:26 1261次阅读

    数组指针不相同吗?数组指针有哪些区别

    数组就是指针指针就是数组,这样的言论在评论区看到不下于10次。
    的头像 发表于 12-13 16:34 344次阅读
    <b class='flag-5'>数组</b>和<b class='flag-5'>指针</b>不相同吗?<b class='flag-5'>数组</b>和<b class='flag-5'>指针</b>有哪些<b class='flag-5'>区别</b>