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另外预留一个存储位置,以在该指针变量中存储字符串的地址。这个变量初始化时指向字符串的第一个字符,但是它的值是可以改变的。

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

  • 相关阅读:
    使用bink播放视频
    Vertex Shader And Pixel Shader
    Points Versus Pixels in Cocos2D
    ogre_机器人在10个位置循环走动
    简单播放声音PlaySound
    Vertex Shader 入门代码
    加载地形的类
    Animation Cache in Cocos2diphone v2.0.0
    [转]Rad Video Tools使用手册
    CSound类源文件
  • 原文地址:https://www.cnblogs.com/qwertWZ/p/2863579.html
Copyright © 2011-2022 走看看