指向字符串的指针 ------ 字符串指针

    (1)用字符数组存放一个字符串

        char string[]="Linux C";

        printf("%s\n",string);

        string是一个字符数组名,它同时也是该字符数组的首地址。

    (2)用字符串指针来指向字符串

        如果不想定义字符数组,就可以只用一个指向字符串的指针,叫“字符串指针”,例如:

        char *p="Linux C";

        printf("%s\n",p);

        “Linux C”是一个字符串常量。C语言对于字符串常量的处理方法:在内存中开辟一个字符数组来存储该字符串常量,并把开辟出的字符数组的首地址赋给p。

//3种方式实现字符串的拷贝
#include 

int main()
{
	char a[] = "Linux C Program",b[20],c[20],d[20];
	int  i;

	//(1)数组
	for(i=0;a[i]!='\0';i++)
		b[i]=a[i];
	b[i]='\0';

	//(2)以数组首地址做基准的指针运算
	for(i=0; *(a+i) != '\0'; i++)
		*(c+i) = *(a+i);
	*(c+i) = '\0';

	//(3)用字符串指针
	char *p1,*p2;
	p1 = a;
	p2 = d;

	for(; *p1 != '\0'; p1++,p2++)
		*p2 = *p1;
	*p2 = '\0';

	printf("%s\n",a);
	printf("%s\n",b);
	printf("%s\n",c);
	printf("%s\n",d);
	return 0 ;
}

运行结果:

指向字符串的指针 ------ 字符串指针_第1张图片


//在函数中实现字符串拷贝
#include 

//用《数组》的方法实现拷贝
void copy_string1(char src[ ],char dst[ ])
{
	int i;

	for(i=0; src[i] != '\0';i++)
		dst[i] = src[i];
	dst[i] = '\0'; 
}

//用《指针》的方法实现拷贝
void copy_string2(char *psrc,char *pdst)
{	
	for(; *psrc != '\0'; psrc++,pdst++)
		*pdst = *psrc;
	*pdst = '\0'; 
}

int main()
{
	char a[] = "I love C",b[20],c[20];
	
	copy_string1(a,b);
	copy_string2(a,c);

	printf("%s\n%s\n%s\n",a,b,c);

	return 0 ;
}

运行结果:

指向字符串的指针 ------ 字符串指针_第2张图片

你可能感兴趣的:(C)