zoukankan      html  css  js  c++  java
  • 字符串的指针和指向字符串的指针变量

     

     
      引自:http://s319.dlut.edu.cn/educ/83.htm

    §8.4 字符串的指针和指向字符串的指针变量

    8.4.1 字符串的表现形式

    C程序中,可以用两种方法实现一个字符串。

    1. 用字符数组实现。

    [8.11]

    void main(void)

    {static char string [ ]="I Love China!";

    printf("%s ",string);

    }

    运行时输出: I Love China!

    和前面介绍的数组属性一样,string是数组名,它代表字符数组的首地址,(见图8.17)。string[4]代表数组中序号为4的元素(v),实际上string[4]就是*(string+4)string+4是指向字符“v”指针。

    2. 用字符指针实现。

    可以不定义字符数组,而定义一个字符指针。用字符指针指向字符串中的字符。

    [8.12]

    void main(void)

    {char *string="I Love China!";

    printf("%s ",string);

    }

    在这里没有定义字符数组,但C语言对字符串常量是按字符数组处理的,实际上在内存开辟了一个字符数组用来存放字符串数组。在程序中定义了一个字符指针变量string。并把字符串首地址(即存放字符串的字符数组的首地址)赋给它(见图8.18)。有人认为string是一个字符串变量,以为定义时把"I Love China!"赋给该字符串变量,这是不确切的。定义string的部分:

    char *string="I Love China!";

    等价于下面两行:

    char *string;

    string="I Love China!";

    可以看到:string被定义为一个指针变量,它指向字符型数据,请注意只能指向一个字符变量或其它字符类型数据,不能同时指向多个字符数据,更不是把"I Love China!"这些字符存放到string中。只是把"I Love China!"的首地址赋给指针变量string(不是把字符串赋给*string)。因此不要认为上述定义行等价于:

    char *string;

    *string="I Love China!";

  • 相关阅读:
    如何隔離物件之間的相依性
    Replace Temp with Query
    Replace conditional with Polymorphism
    Switch to strategy
    Microsoft Visual Studio 插件
    Windows Phone 8 开发系列(持续更新中)
    Windows Phone 如何振动手机?
    Windows Phone 如何在程序中播放提示声音?
    实现一个纵向排列的 ListBox ,并具有操作按钮
    多个 App 间启动
  • 原文地址:https://www.cnblogs.com/mygh/p/14270275.html
Copyright © 2011-2022 走看看