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

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

3天内不再提示

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

学益得智能硬件 来源:学益得智能硬件 2023-12-13 16:34 次阅读

数组就是指针,指针就是数组,这样的言论在评论区看到不下于10次。

翻开《C专家编程》,来到第四章,标题非常醒目:

令人震惊的事实,数组和指针并不相同。

之前的视频我们讲过,数组可以用指针来表示,指针也可以用数组的形式来访问,今天再来盘点一下,数组和指针有哪些区别。

第一个声明的方式不一样。

比如在 1.c 文件中定一个全局数组:

如果想在 2.c 文件中使用,那么只能写成这样:

extern int array[];

如果写成:

extern int *array;

程序就会崩溃。

虽然编译没有问题,但是运行的时候,array 可能就是个空指针。

第二个访问的方式也不一样。

对于数组来说,先是取下标的值,然后跟数组首元素的地址相加,最后取对应地址里面的内容。

wKgZomV5bNWAKk-MAAiwLZWOrIE597.jpg

指针则是先取指针变量里面的地址,然后再取对应地址里面的内容。

wKgaomV5bNWAW_OaAAjqlqhu_oQ050.jpg

第三个也是它们最本质的区别,数组用于保存数据,指针用于保存数据的地址。

第四个使用场景不同。

指针常用于动态数据结构,配合 malloc 和 free 函数,根据实际情况分配和释放内存;数组通常用于存储固定数目,且数据类型相同的元素,内存一般隐式分配和删除。

数组和指针,日常使用中尽管看上去一样,但是底层实现的机制却不同。






审核编辑:刘清

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

    关注

    1

    文章

    415

    浏览量

    25906

原文标题:令人震惊的事实:数组和指针并不相同

文章出处:【微信号:学益得智能硬件,微信公众号:学益得智能硬件】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    周立功教你学C语言编程:教你数组是如何保存指针

    虽然数组指针数组存储的都是数据,但还是细微的差别。数组存储的是相同类型的字符或数值,而
    的头像 发表于 08-31 10:09 6954次阅读
    周立功教你学C语言编程:教你<b class='flag-5'>数组</b>是如何保存<b class='flag-5'>指针</b>的

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

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

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

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

    数组指针的详细讲解

    数组指针的详细讲解
    发表于 10-16 08:44 0次下载

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

    指针数组都是C语言的精髓所在,对于很多C程序员来说,如果你问这样一个问题:数组指针什么区别
    的头像 发表于 05-27 14:51 4065次阅读
    <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 2w次阅读
    <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>

    理解函数指针、函数指针数组、函数指针数组指针

    理解函数指针、函数指针数组、函数指针数组指针
    的头像 发表于 06-29 15:38 1.5w次阅读
    理解函数<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>的<b class='flag-5'>指针</b>

    C语言指针数组区别

    在C语言教程中我们使用通过数组名通过偏移和指针偏移都可以遍历数组,那么指针数组到底什么
    的头像 发表于 07-18 16:29 1900次阅读

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

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

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

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

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

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

    数组指针不能混用的情况

    指针的基本概念。数组是一组相同类型的元素的集合,而指针是一个变量,它存储了一个地址,该地址指向内存中的某个位置。在 C/C++ 中,数组
    的头像 发表于 12-07 13:46 569次阅读

    面试常考+1:函数指针指针函数、数组指针指针数组

    在嵌入式开发领域,函数指针指针函数、数组指针指针数组是一些非常重要但又容易混淆的概念。理解它
    的头像 发表于 08-10 08:11 691次阅读
    面试常考+1:函数<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><b class='flag-5'>数组</b>

    指针数组和二维数组有没有区别

    指针数组和二维数组有没有区别?比如这样的两个代码。 int main(){ char *s1[] = { "hello", "world", "total" }; char s2[][
    的头像 发表于 11-24 11:12 44次阅读