• 24深入理解C指针之---指针和数组


      一、指针和数组

     1 #include <stdio.h>
     2
     3 int main(int argc, char **argv)
     4 {
     5     int vector[5] = {1, 2, 3, 4, 5,};
     6     int *ptrVector = vector;
     7     int size = sizeof(vector)/sizeof(int);
     8
     9     printf("Used arr:
    ");
    10     for(int i = 0; i < size; i++){
    11         printf("vector[%d]: %d
    ", i, vector[i]);
    12     }
    13     printf("
    ");
    14
    15     printf("Used ptr:
    ");
    16     for(int i = 0; i < size; i++){
    17         printf("vector[%d]: %d
    ", i, *(ptrVector + i));
    18     }
    19     printf("
    ");
    20
    21     printf("Special used arr:
    ");
    22     for(int i = 0; i < size; i++){
    23         printf("vector[%d]: %d
    ", i, i[vector]);
    24     }
    25     printf("
    ");
    26
    27     printf("Special used ptr:
    ");
    28     for(int i = 0; i < size; i++){
    29         printf("vector[%d]: %d
    ", i, *(i + ptrVector));
    30     }
    31     printf("
    ");
    32
    33     printf("The vector size: %d
    ", size);
    34
    35     return 0;
    36 }


        1、代码说明:

          1)、9-13行的代码展示了一般的访问数组的方式

          2)、15-19行的代码展示了使用指针访问数组的方式

          3)、21-25行的代码展示了使用交换指针访问数组的方式

          4)、27-31行的代码展示了使用交换数组和下标的访问数组方式

          5)、若存在第5和第6行代码,则存在vector[i]  <=> *(ptrVector + i),因此必然存在 i[vector]  <=> *(i + ptrVector),因此存在21到31行的代码

        2、特殊说明:

          1)、数组名称本身可以表示数组的地址,可以使用ptrVector = vector语句实现指针赋值;

          2)、也可以使用&实现获取地址,使用ptrVector = &vector语句实现指针变量的赋值

          3)、可以使用*(ptrVector + i)访问索引为i的数组元素

          4)、可以使用*(vector + i)访问索引为i的数组元素

          5)、使用数组名运算时,需要主要添加的是整个数组的大小

          6)、vector[i] 的机器码是从vector地址开始,移动i个位置,取出对应的内容

          7)、*(vector + i)的机器码是从vector地址开始,在地址上增加i,取出对应的内容

  • 相关阅读:
    不为人知easy-mock-cli
    javascript设计模式之适配器模式
    js --装饰者模式
    使用策略模式封装拦截器
    js --桥接模式
    深入理解面向对象 -- 基于 JavaScript 实现
    设计模式 -- 观察者模式
    敏捷开发
    从技术走向管理
    Vue Cli安装以及使用
  • 原文地址:https://www.cnblogs.com/guochaoxxl/p/6960842.html
Copyright © 2020-2023  润新知