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

    指针是C/C++语言中最难也是最重要的部分,而指针与数组又存在千丝万缕的联系,同时也存在使用上的区别,本文即对两者进行比较,仅作抛砖引玉之用。

    1、存储内容:

    • 指针:保存数据的地址
    • 数组:保存数据
    • int n = 12;
      int *p = &n; //p存储n的地址
      int  a[12] = {1,2}; //数组a直接存储数据
      

        

    2、访问数据:

    • 指针:间接访问数据, 首先获取指针的内容(存储的是地址), 然后把它作为地址,接着从这个地址中获取数据; 如果指针是一个下表[i],就把指针的内容加上i个偏移单位作为地址,从中获取数据
        指针通常指向匿名数据。
    • 数组: 直接访问数据,a[i] 表示以 a+i*sizeof(a[0]) 为地址取得数据
        数组自身即为数据名。
    3、用途:
    • 指针:通常用于动态数据结构
    • 数组:通常用于存储固定数目且数据类型相同的元素
    4、相关函数:
    • 指针:malloc(), free(), realloc(),alloc()
    • 数组:隐式分配和删除 
    5、初始化:
       指针和数组都可以在定义的时候进行初始化,但机制不同。
    • 指针:定义指针的时候,编译器并不为指针所指向的对象分配空间(除了给指针赋一个字符串常量外),只分配指针本身的空间。同时在初始化指针时,所创建的字符串常量定义为只读类型。如果试图通过指针进行修改该字符串的值,程序会出现未定义的行为(一般来说,字符串常量放置在只读文本段中)。
    • 数组:有字符串常量初始化的数组可以进行修改。
    • char *p = "Hello World"; //p被初始化为"Hello World",该字符串存储在常量段中,不允许修改
      p = "Such"; //未定义行为,不能对p进行修改
      float *fp = 25.6; //无法编译
      
      char a[] = "HelloWorld!";
      strncpy( a, "This ", 5 ); //数组的值被修改为 “This World!”
      

        

     

  • 相关阅读:
    Docker容器监控(十)--技术流ken
    Docker跨主机通信(九)--技术流ken
    Docker多主机管理(八)--技术流ken
    Docker公共&本地镜像仓库(七)--技术流ken
    Docker镜像构建的两种方式(六)--技术流ken
    Docker网络(五)--技术流ken
    tomcat使用详解(week4_day2)--技术流ken
    haproxy使用演示--技术流ken
    xshell连接虚拟机详解--技术流ken
    grafana使用详解--技术流ken
  • 原文地址:https://www.cnblogs.com/bylikai/p/2176847.html
Copyright © 2011-2022 走看看