零基础入门学习C语言009讲:指针(4)

版权声明:转载请标明出处 https://blog.csdn.net/qq_41556318/article/details/89736100

字符串与指针

(1) 用字符数组存放一个字符串,然后输出该字符串。

例题一:定义一个字符数组,对它初始化,然后输出该字符串。 

#include <stdio.h>

void main()
{
	char string[] = "I love https://www.csdn.net/!";

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

(注:\0 是字符串的结束符)。

(2) 用字符指针指向一个字符串

例题二:可以不定义字符数组,而定义一个字符指针。用字符指针指向字符串中的字符。

#include <stdio.h>

void main()
{
	char *string = "I love https://www.csdn.net/!";

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

字符串中字符的存取方法

对字符串中字符的存取,可以用下标方法,也可以用指针方法!

下标法举例:将字符串a复制为字符串b

#include <stdio.h>

void main()
{
	char a[] = "www.csdn.net is a good web site!", b[40];
	int i;

	for (i = 0; *(a + i) != '\0'; i++)
	{
		*(b + i) = *(a + i);
	}
	*(b + i) = '\0';

	printf("String a is: %s\n", a);
	printf("String b is: ");
	for (i = 0; b[i] != '\0'; i++)
	{
		printf("%c", b[i]);
	}

	printf("\n\n");
}

指针方法举例:将字符串a复制为字符串b

#include <stdio.h>

void main()
{
	char a[] = "www.csdn.net is a good web site!", b[40], *p1, *p2;
	int i;

	p1 = a;
	p2 = b;

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

	printf("String a is: %s\n", a);
	printf("String b is: ");
	for (i = 0; b[i] != '\0'; i++)
	{
		printf("%c", b[i]);
	}

	printf("\n");
}

字符指针作函数参数

例题三:用函数调用实现字符串的复制

(1)用字符数组作参数

#include <stdio.h>

void  main()
{
	void  copy_string(char from[], char to[]);

	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);
}

void  copy_string(char from[], char to[])
{
	int i = 0;

	while (from[i] != '\0')
	{
		to[i] = from[i];
		i++;
	}
	to[i] = '\0';
}

(2)形参用字符指针变量

#include <stdio.h>

void  main()
{
	void copy_string(char *from, char *to);

	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);
}

void  copy_string(char *from, char *to)
{
	for (; *from != '\0'; from++, to++)
	{
		*to = *from;
	}

	*to = '\0';
}

//丫的,出错了,为什么? WHY??

出错的原因下一个文章讲解。

大家可以先看一下这篇文章找一下答案:

C/C++ 五大内存分区

猜你喜欢

转载自blog.csdn.net/qq_41556318/article/details/89736100