关于整形指针的一个问题

img

为什么c是一个整形指针,在给c分配了内存之后,最后的c[0]会是一个整数而不是一个指针呢?请详细的解释一下,万分感谢

int * 这个就是定义整形指针。 c分配了长度为3的内存空间,那 它就相当于整形数组 int c[3] , 其中 c[0] 就是 它的第一个整形元素

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7540621
  • 这篇博客也不错, 你可以看下语义分析器:用c语言实现实现含多条简单赋值语句的语法语义分析程序,要求采用递归下降翻译法(编译原理)
  • 你还可以看下c语言参考手册中的 c语言-内存模型与数据竞争
  • 除此之外, 这篇博客: [C语言]浅谈数据类型中的 你是否还在纠结为啥C语言会有这么多的数据类型? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    我的理解就是既省时间又省空间

    在讲数据类型之前,我们先来看一下计算机里面最小的储存单位是比特,一个比特可以存一个0或1。

    计算机是基于二进制的,这是因为人们很容易使用硬件上来控制高低电压(比如用电源和开关,通过开关的状态【开/关】就能控制这条线路上的电压)

    如果我们要用计算机去储存一些信息,我们就只能用0和1来表示一些信息。这个时候我们会怎么办呢。

    其实我们可以通过制定一些规则来让计算机识别我们输入的信息,比如设定一个具体的数,每次计算机得知这是一些信息的时候,就会去读取这个数那么多的比特来表示信息

    举个例子:比如我规定每次读取10位,那么每次计算机识别到具体的数据储存地方就会10个比特读取

     0101010100
    

    我们就可以用0101010100来表示这一些信息也就是十进制的154

    看到这里,你就会想,对啊,这不就可以表示信息了么,那为什么还要规定这么多的数据类型。

    你想,
    如果我如果储存的信息只用1个比特就能储存,那我为什么还要读取10位然后在取第1位,我可以直接让计算机读取1个比特来表示这个信息。

    而计算机读取是要时间的,所以如果我们规定适当的读取长度,就可以节省时间(读取)和空间(储存)

    因此,我们为了方便着想就规定C语言有如下几种数据类型:

  • 您还可以看一下 李飞老师的C语言开发之数据结构与算法一课程中的 查找两个链表中第一个相同的节点小节, 巩固相关知识点

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^