C语言指针基础知识点(七)--通过指针引用字符串

指针系列目录

  C语言指针基础知识点(一)–指针及指针变量
  C语言指针基础知识点(二)–指针变量的引用
  C语言指针基础知识点(三)–指针变量作为函数参数
  C语言指针基础知识点(四)–通过指针引用数组
  C语言指针基础知识点(五)–用数组名作函数参数
  C语言指针基础知识点(六)–通过指针引用多维数组
  C语言指针基础知识点(七)–通过指针引用字符串
  C语言指针基础知识点(八)–返回指针值的函数
  C语言指针基础知识点(九)–指针数组和多重指针
  C语言指针基础知识点(十)–动态内存分配与指向它的指针变量

通过指针引用字符串

1. 字符串的引用方式

字符串是存放在字符数组中的,引用字符串,有以下两种方法:

(1).通过数组名和下标

#include <stdio.h>

int main()
{
	char string[]="I love china!";
	printf("%s\n",string);
	printf("%c\n",string[7]);
	return 0;
}

在这里插入图片描述
(2).通过字符指针变量引用一个字符串常量

#include <stdio.h>

int main()
{
	char *string="I love china!";   // 把字符串的第1个元素的地址赋给字符指针变量 string
	printf("%s\n",string);
	return 0;
}

在这里插入图片描述


栗子1:

将字符串a赋值给字符串b,然后输出字符串b

方法1: 字符数组

#include <stdio.h>

int main()
{
	char a[]="I love china!", b[20];
	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:%s\n", b);

	printf("string b is:");
	for(i=0;b[i]!='\0';i++)
		printf("%c",b[i]);

	printf("\n");

	return 0;
}

在这里插入图片描述
方法2:指针变量

#include <stdio.h>

int main()
{
	char a[]="I love china!", 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;
}

在这里插入图片描述
2. 字符指针作函数参数

函数的形参和实参分别用字符数组名或字符指针变量

#include <stdio.h>

int main()
{
	void copy_string(char from[], char to[]);
	char a[]="I love china!";
	char b[]="You are a teacher!";

	printf("string a=%s\nstring b=%s\n",a,b);
	printf("copy string a to string b:\n");

	copy_string(a,b);

	printf("string a=%s\nstring b=%s\n",a,b);

	return 0;

}

void copy_string(char from[], char to[])
{
	int i = 0;
	while(from[i]!='\0')
		{
			to[i]=from[i];
			i++;
		}	
	to[i]='\0';		
}

在这里插入图片描述

3. 字符指针变量作形参和实参

#include <stdio.h>

int main()
{
	void copy_string(char *from, char *to);
	char *a="I love china!";
	char b[]="You are a teacher!";

	char *p=b;

	printf("string a=%s\nstring b=%s\n",a,b);
	printf("copy string a to string b:\n");

	copy_string(a,p);

	printf("string a=%s\nstring b=%s\n",a,b);

	return 0;

}

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

	*to='\0';		
}

4. 字符指针变量和字符数组变量的比较

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值