C语言学习笔记——字符串和字符串函数(一)

一、字符串
由于字符串比较常用,所以C提供了许多用于处理字符串的函数,下面的例子简单介绍一下表示字符串的几种方式。
例;

#incldue
#define MESSAGE "I am a symbolic string constant."
#define MAXLENTH 100
int main(void){

  char string[MAXLENTH]="I am  a string in array.";
  const char *p1="Someting is pointing at me.";
  puts("Here are some strings:");
  puts(MESSAGE);
  puts(string);
  puts(p1);
  string[8]='p';
  puts(string);
  return 0;
}
  • 输出的结果为:
Here are some strings:
I am a symbolic string constant
I am  a string in array.
Someting is pointing at me.
I am  a spring in array.

二、 在程序中定义字符串
在上述程序中,使用了多种方法定义字符串(字符串常量、char类型的数组、指向char的指针)

  1. 字符串字面量(字符串常量)
    用双括号括起来的内容称为字符串字面量,也叫字符串常量,双引号中的字符和编译器自动加入末尾的 ‘\0’ 字符,都作为字符串储存在内存中,所以上例中的
Here are some strings:
I am a symbolic string constant
I am  a string in array.
Someting is pointing at me.

均为字符串字面量

字符串常量属于静态存储类别(static storage class),这说明如果在函数中使用字符串常量,该字符串只会被储存一次,在整个程序的生命周期中,即使被调用多次,也是如此。
用双引号引起来的内容被视为指向该字符串存储位置的指针。类似于数组名就是数组的首地址,即指向数组位置的指针。
例:

#include
int main(void){
printf("%s,%p,%c","We","are",*"family");
return 0;

}

输出结果为:
C语言学习笔记——字符串和字符串函数(一)_第1张图片
printf()函数根据%s的格式说明打印了We,根据%p打印了一个地址。因此,如果“are”代表一个地址,那么printf()将打印该字符串的首地址。*"family"表示该字符串所指向地址储存的值,所以应该是该字符串的首字母。

参考书目:C Primer Plus

你可能感兴趣的:(C语言学习笔记,c语言,字符串)