我们知道,在C语言中,可以用两种方式访问字符串

  • 用字符数组存放一个字符串,然后输出该字符串:

    void main(){
        char string[] = "hello world!";
        printf("%s\n",string);
    }
  • 用字符指针指向一个字符串。即不定义字符数组,而定义一个字符指针,用字符指针指向字符串常量。

    void main(){
        //定义一个指针变量
        //将指针变量string指向字符串常量"hello world!"
        //指针变量string的数值为字符串常量"hello world!"的地址
        char *string = "hello world!";
       
        printf("%s\n",string)
    }

我们看到,在第二种方法中,我们没有定义字符数组名,而是在程序中定义了一个字符指针变量string,用字符串常量 "hello world!"对它进行初始化。

C语言对字符串常量是按字符数组处理的,在内存中开辟了一个字符数组用来才存放该字符串常量。对字符指针变量初始化,实际上是把字符串第1个元素的地址(即存放字符串的字符数组的首元素地址)赋给string。

特别要强调的是, char *string = "hello world!"; 这一句并不是把"hello world!"赋给了string变量,因为string是指针变量,只能存放地址。这条语句是吧"hello world!"的第一个字符的地址赋给了string,仅此而以。

Last modification:March 15th, 2020 at 04:00 pm
如果觉得我的文章对你有用,请随意赞赏