zoukankan      html  css  js  c++  java
  • c语言的数组指针与指针数组

    1. 数组指针:指向数组的指针是数组指针

    先看下面一段代码:

    #include <stdio.h>
    
    int main(void)
    {
        int m[10];
    
        printf("m = %p, &m = %p
    ", m, &m);
        printf("m + 1 = %p, &m + 1 = %p
    ", m + 1, &m + 1);
    
        return 0;
    }
    

    运行上面的代码得到的结果如下图:

    上面代码中&m是指向数组的指针,也就我们说的数组指针,它在m在数值上是完全相等的,都指向的是同一段内存的起始地址经网友garbageMan指正,改为 “分别指向的是具有同一起始地址的两段(块)内存”。但是它们的类型确是不同的。其中m是 int *型的指针;而&m指向的是int m[10]这样一个数组,是一个数组指针,因此m +  1 相当于加上 sizeof(int),由上图可以计算(0x0028FEFC - 0x0028FEF8) =  4; 而&m + 1相当于加上sizeof(int[10]),由上图中的计算(0x0028FF20 - 0x0028FEF8) = 40。

    可以有如下定义:

    int (*p)[10] = &m; 这里p就是一个数组指针,并且这里(*p)的括号是必须的,()的优先级高于[],因此p首先是一个指针,然后指向的是int [10]的数组。

    2. 指针数组:由多个指针组成的数组是指针数组

    int *p[10]; 这里可以和上面数组指针做对比。p首先是一个数组,然后类型是指针,因此p是指针数组(含有10个指针,例如p[0]、p[1]。。。p[9],每个指针的类型为int *),它的每个变量都可以用来存放地址。

  • 相关阅读:
    vue-quill-editor 注册行高样式
    vue-quill-editor + + antd 组件封装(包含图片上传)
    uniapp
    unipp
    uniapp
    uniapp
    简单实现数据双向绑定
    使用canvas + hammer.js 手势库 制作海报
    如何在jquery 中动态添加 !important 样式
    基于极光 实现在线聊天
  • 原文地址:https://www.cnblogs.com/jaydenhpj/p/4436012.html
Copyright © 2011-2022 走看看