本问介绍数组或字符串在内存中如何表示以及如何分配内存存储字符串。
首先理出对字符串可以执行的基本操作:
(1)比较两个字符串。(2)字符串复制。(3)查找字符串长度。(4)在字符串中查找子串。
下面是几种不同初始化字符串的方法:
char *strptr="hello"; char starrray1[]="hello"; char starrray2[6]="hello"; char starrray3[4]={'a','b','c','d'};
1、内存中的字符串排列
通常情况下,字符数组或字符串存储在连续内存单元中,如图所示:
通过类似于数组的方式访问串元素。数组索引和指针运算都可用来访问数组元素:
示例:
#include <stdio.h> int main() { char*str = "hello pointer"; int i = 0; for (i = 0; i < strlen(str); i++) { printf("%c", str[i]); } return 0; }
运行结果:
上述示例中,利用数组索引访问字符串中的字符。函数strlen(char*)用来返回字符串的长度。返回的长度不包括所有字符串总必有的最后一个空字符。
下面示例使用临时指针变量char* ptr遍历整个字符串。
#include <stdio.h> int main() { char* str = "hello pointer"; char* ptr = str; while (*ptr != '