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

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

3天内不再提示

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

学益得智能硬件 来源:学益得智能硬件 2024-11-24 11:12 次阅读

指针数组和二维数组有没有区别?比如这样的两个代码。

int main()
{
    char *s1[] = {
        "hello",
        "world",
        "total"
    };  

    char s2[][6] = { 
        "hello",
        "world",
        "total"
    };  


    return 0;
}

从后面的初始化方式可以看出,他们好像一样,里面都保存了三个字符串。

想要搞清楚他们的区别,还得看下他们在内存中的排布。

首先是指针数组 s1。

s1 本身是个一维数组,数组有三个元素,每个元素都是个指针。如果是 64 位系统,三个指针就占了 24 个字节。

使用 sizeof 计算 s1 的大小,结果就是 24。

三个指针指向三个字符串,而且这三个字符串存放在只读数据区,不能修改,尝试通过指针 s1[0] 去修改元素 h,程序会异常。

s2 本身是个二维数组,三行六列,每一行都存放一个字符串。使用 sizeof 计算 s2 的大小,结果是 18。

在这个案例中 s2 是个局部变量,于是这三个字符串存放在栈空间,可读可写。通过 s2 可以随意修改。

要说他俩的相同点,就是使用起来基本一样,要想访问字符串里面的元素,完全可以把 s1 当成二维数组,通过下标的形式去访问。

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

    关注

    1

    文章

    480

    浏览量

    70558
  • 二维
    +关注

    关注

    0

    文章

    40

    浏览量

    11984
  • 数组
    +关注

    关注

    1

    文章

    417

    浏览量

    25943

原文标题:指针数组和二维数组

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

收藏 人收藏

    评论

    相关推荐

    Labivew 实现鼠标在数组中选中元素时,精准的显示所在位置的行、列值方法

    在项目开发中,遇到一个布尔的二维数组输入控件,选中数组元素并索引出行列的操作,试过其他大佬的方法,不是特别精准,,尝试一下还可以,分享给需要的朋友 *附件:选中二维
    发表于 12-21 18:07

    C语言数组应用计算机导论A第6讲:数组

    C语言数组应用计算机导论A第6讲:数组
    发表于 11-20 15:33 0次下载

    C语言指针运算符详解

    在C语言中,当你有一个指向数组中某个元素的指针时,你可以对该指针执行某些算术运算,例如加法或减法。这些运算可以用来遍历数组中的元素,如ptr[i]等价于*(ptr + i)。然而,如果
    的头像 发表于 10-30 11:16 245次阅读

    labview按行读取二维数组之后再按读取顺序重新组成二维数组如何实现?

    labview用了index Array按索引一行行读取二维数组之后想再按读取顺序重新组成一个二维数组如何实现,即第一次读取的作为第一行,第
    发表于 10-25 21:06

    请问labview是否无法向matlab传递3数组

    经过一些测试,发现在matlab script中只能传二维数组,利用打包.net库,好像还是只能传递二维数组。 是不是从底层就不支持,这两种语言的三
    发表于 10-22 20:14

    C语言指针详细解析

    数组数组二维数组名可以看做指向其第一个元素(一数组
    发表于 09-14 10:03

    labview字符串数组转化为数值数组

    在LabVIEW中,将字符串数组转换为数值数组是一项常见的任务,尤其是在处理数据采集、信号处理或用户输入时。 1. 理解LabVIEW的数据类型 在开始之前,了解LabVIEW中的数据类型是非
    的头像 发表于 09-04 17:47 2291次阅读

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

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

    数组的转换到二维数组后的行列增减问题

    请大佬指点,如VI,两个求助点: 1、一数组大小,在停止Vi前把数组大小增加到4,在循环外设置了一数组的行数为0了,为啥再次运行VI后,
    发表于 05-11 00:25

    深入探索KUKA KRL中的数组应用

    如果 CHAR 类型数组的所有数组元素都拥有相同的字符串,则不必单独初始化每个数组元素。忽略右侧的数组下标。(对于一
    的头像 发表于 04-18 10:37 1237次阅读
    深入探索KUKA KRL中的<b class='flag-5'>数组</b>应用

    数组和链表在内存中的区别 数组和链表的优缺点

    数组和链表在内存中的区别 数组和链表的优缺点  数组和链表是常见的数据结构,用于组织和存储数据。它们在内存中的存储方式以及优缺点方面存在一些显著的差异。本文将详细探讨这些差异以及它们的
    的头像 发表于 02-21 11:30 1032次阅读

    数组和链表有何区别

    数组和链表的区别,这个问题,不仅面试中经常遇到,考研的同学也得掌握才行。
    的头像 发表于 02-19 15:33 507次阅读
    <b class='flag-5'>数组</b>和链表有何<b class='flag-5'>区别</b>

    鸿蒙进制数组创建

    背景 c++层数据都是进制,需要转换成arrayBuffer透传到ets层给业务使用,但是鸿蒙的使用下面两个api创建出来的进制数组数据都是错误的。 接口
    的头像 发表于 01-31 15:24 1269次阅读

    PHP中数组的使用方法!

    PHP中数组的使用方法! PHP是一种广泛使用的网络编程语言,它的数组功能非常强大且灵活。数组是一种数据结构,它允许我们在单个变量中存储多个值。 在本篇文章中,我将详细解释PHP数组
    的头像 发表于 01-12 15:11 543次阅读

    labview怎么查数组中相同元素的个数

    要查找LabVIEW中数组中相同元素的个数,可以使用以下步骤: 创建一个包含要查找的数值的数组。这可以通过手动输入数组元素或从文件/其他数据源导入数组实现。 使用“For Loop”结
    的头像 发表于 12-28 16:42 3503次阅读