![](https://csdnimg.cn/release/download_crawler_static/87167325/bg6.jpg)
⊙用指针的目标存储字符串,可简称为用指针存储字符串。
char *s, *t, *u;
s = (char *)malloc(sizeof(char)*7);
u = (char *)malloc(sizeof(char)*7);
strcpy(s, ”Do it!”);
t = s;
strcpy(u, s);
s
t
首地址E100
o
□
D t !i \0
E100
首地址E100
o
□
D t !i \0o
□
D t !i \0
E100
E100E100
u
首地址EB22
o
□
D t !i \0EB22
首地址EB22
o
□
D t !i \0o
□
D t !i \0EB22
其中,s 将目标的地址复制给 t,将目标的值复制给 u,两者是不同的。
※字符串的赋值
⊙字符串复制
利用 strcpy 和 strcat 等函数将字符串复制给数组或者动态数组。
函数 strcpy(dst, src)的功能是将 src 复制到 dst。
函数 strcat(dst, src)的功能是将 src 附加到 dst 的后面。
例如,定义 char s1[7]; 可有
strcpy(s1, ”Do i”);
strcat(s1, ”t! ”);
strcpy(s1, “Do i”);strcpy(s1, “Do i”);
D
D
D
D
o
o
o
o
□
□
□
□
i
i
i
i
\0
\0
\0
\0
o
□
D \0io
□
D \0i
strcat(s1, “t!”);
\0
\0
\0
\0
t
t
t
t
!
!
!
!
⊙按数组元素逐个赋值
例如,定义 char s2[7]; 可有
s2[0] = ’D’;
s2[1] = ’o’;
......
s2[6] = ‘\0’;
D
D
D
D
o
o
o
o
□
□
□
□
i
i
i
i
t
t
t
t
!
!
!
!
\0
\0
\0
\0
s2
⊙初始化赋值
例如,
char s3[7] = “Do it!”;
! \0D o
□
i t ! \0D o
□
i t
s3
※字符串使用的常见问题示例
【例 3-2.4】字符串使用示例一
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
main()
{
char *t, *u, *v;
t = (char *)malloc(sizeof(char)*strlen("hello"));
u = (char *)malloc(sizeof(char)*(strlen("hello")+1));
v = (char *)malloc(sizeof(char)*strlen("he"));
strcpy(t, "hello you");
strcpy(u, "hello you");
strcpy(v, "hello you");
printf("t=[%X]\tu=[%X]\tv=[%X]\n", t, u, v);
printf("t=[%s]\tu=[%s]\tv=[%s]\n", t, u, v);
}
在 VC++的环境下,运行结果为:
t=[431C50] u=[431C10] v=[431BE0]
t=[hello you] u=[hello you] v=[hello you]