指针[03]
8.6 指针与字符串
8.6.1 字符串的表示
(1)用字符数组存放一个字符串
#include<stdio.h>
int main()
{
char string[] = "I Love China!";
printf("%s\n", string);
return 0;
}
(2)用字符指针指向一个字符串
#include<stdio.h>
int main()
{
char* string = "I Love China!";
printf("%s\n", string);
return 0;
}
注意:
char* string = "I Love China!";
等价于
char* string; string = "I Love China!";
而不是
char* string; *string = "I Love China!";
例,字符串的复制:将字符数组a里面的字符串复制到字符数组b.
#include<stdio.h>
int main()
{
char a[] = "I am a boy.", b[20];
int i;
for (i = 0; *(a + i) != '\0'; i++)
*(b + i) = *(a + i);
*(b + i) = '\0'; //当循环结束时,指针位置跳到i+1,正好是结束符的位置;
printf("string a is : %s\n", a);
printf("string b is : ");
for (i = 0; b[i] != '\0'; i++)
printf("%c", b[i]);
printf("\n");
return 0;
}
用指向字符数组的指针实现:
#include <stdio.h>
int main()
{
char a[] = "I am a boy.", b[20], * p1, * p2;
p1 = a;
p2 = b;
for (; *p1 != '\0'; p1++, p2++)
*p2 = *p1;
*p2 = '\0';
printf("string a is: %s\n", a);
printf("string b is: %s\n", b);
return 0;
}
8.6.2 字符数组作函数参数
(1)实参形参都为字符数组
#include <stdio.h>
void copy_string(char from[], char to[]);
int main()
{
char a[] = "I am a teacher.";
char b[] = "you are a student.";
printf("string a = %s\nstring b = %s\n", a, b);
printf("copy string a to string b: \n");
copy_string(a, b);
printf("\nstring a = %s\nstring b = %s\n", a, b);
return 0;
}
void copy_string(char from[], char to[]</