C语言-字符串

1、字符串的概念

  字符串是有序字符的集合 

  字符串是程序中的基本元素之一 

 C语言中没有字符串的概念 

     - C语言中通过特殊的字符数组模拟字符串 

     - C语言中的字符串是以 '' 结尾的字符数组

2、字符数组与字符串 

在C语言中,双引号引用的单个或多个字符是一种特殊的字面量 

              -存储于程序的全局只读存储区 

              -本质为字符数组,编译器自动在结尾加上''字符 

下面那些是字符串的定义?

  

1    char ca[] = {'H''e''l''l''o'};  //普通字符数组
2     char sa[] = {'W''o''r''l''d'''};  //存储于全局只读存储区的结尾的字符数组 - 字符串
3     char ss[] = "Hello world!";  //存储于全局只读存储区的结尾的字符数组 - 字符串
4     char* str = "Hello world!";  //存储于全局只读存储区的结尾的字符数组 - 字符串

对于ca的打印会出现不期望的内容(没有以字符串打印,一直往后打印)

4、鲜为人知的小秘密 

你知道吗? 

               -字符串字面量的本质是—个数组 

               -字符串字面量可以看作指针常量

               -字符串字面量中的字符不可改变 

               -字符串字面量至少包含—个字符() 

5、字符串字面量 

  "Hello World ! "是—个无名的字符数组 

下面的表达式正确吗?

1     char b = "abc"[0];  
2     char c = *("123" + 1);  
3     char t = *"";  

6、实例分析 

字符串字面量的本质     30-2.c

 1 #include <stdio.h>  
 2   
 3 int main()  
 4 {  
 5     char b = "abc"[0];  
 6     char c = *("123" + 1);  
 7     char t = *"";  
 8       
 9     printf("%c
", b);  
10     printf("%c
", c);  
11     printf("%d
", t);  //对应的ascii为0
12       
13     printf("%s
""Hello");  
14     printf("%p
""World");  
15       
16     return 0;  
17 }  

7、字符串的长度

  字符串的长度就是字符串所包含字符的个数 

  字符串长度指的是第—个''字符前出现的字符个数 

  通过''结束符来确定字符串的长度 

  函数strlen用于返回字符串的长度

8、编程实验 

strlen的使用     30-3.c 

 1 #include <stdio.h>  
 2 #include <string.h>  
 3   
 4 int main()  
 5 {  
 6     char s[] = "Helloworld";  //sizeof(s) = 11 需要加上最后编译器加上的
 7     int i = 0;  
 8       
 9     for(i=0; i<sizeof(s)/sizeof(char); i++)  
10     {  
11         printf("%c
", s[i]);  //h e l l o  w o r l d 
12     }  
13       
14     printf("%s
", s);  //Hello
15   
16     printf( "%d
", strlen(s) );  //5
17     printf( "%d
", strlen("123") );  //3
18    
19       
20     return 0;  
21 }  

9、小结

            C语言中通过字符数组模拟字符串 

            C语言中的字符串使用''作为结束符 

            字符串字面量的本质为字符数组 

            字符串相关函数都依赖于结束符''

原文地址:https://www.cnblogs.com/lemaden/p/10128051.html