zoukankan      html  css  js  c++  java
  • 字符串的数组形式与指针形式

    char pets1[12] = "nice cat.";

    char *pets2 = "nice cat.";

    字符串的数组形式(pets1[12])在计算机内存中被分配一个有若干个元素的数组。每个元素都被初始化为相应的字符。通常,被引用的字符串存储在可执行文件的数据段部分;当程序被加载到内存中时,字符串也被加载到内存中。被引用的字符串被成为位于静态存储区。但是在程序开始运行之后才为数组分配存储空间。这时候,会把被引用的字符串复制到数组中。此后,编译器会把数组名pets1看作是数组首元素的地址&pets1[0]的同义词。这里最重要的一点是,在数组形式中,pets1是地址常量。您不能改变pets1。可以使用pets1+1来标识数组里的下一个元素,但是不允许使用pets1++。

    指针形式(*pets2)也在静态存储区为字符串预留若干个元素的空间。此外,一旦程序开始执行,还要为指针变量pets2另外预留一个存储位置,以在该指针变量中存储字符串的地址。这个变量初始化时指向字符串的第一个字符,但是它的值是可以改变的。

    总之,数组初始化是从静态存储区把一个字符串复制给数组,而指针初始化只是复制字符串的地址。

  • 相关阅读:
    第一个SWT程序
    稀疏数组
    算法与数据结构
    《Java核心技术》学习笔记 第1-3章
    算术运算符
    5.11 rw zip file
    5.10 gob序列化
    5.9 piping between writer and reader
    5.7 io.MultiWriter(buf, f)
    5.7 读写 二进制数据
  • 原文地址:https://www.cnblogs.com/qwertWZ/p/2863579.html
Copyright © 2011-2022 走看看