字符指针及其函数的使用

字符指针

一、字符指针的有关内容

首先需要明确的是,字符串实际就是字符数组。比如说:

char p="hello world";

实际上应该是:

p={'h','e','l','l','o',' ','w','o','r','l','d','\0'};

因此在定义字符串时,我们需将其看作是数组,也就是说:

p <=> p[]
p[1] <=> *(p+1)

这些是等价的
image
如上图所示
同时,在表示函数的参数时,下面二者表述等价。

(char p,char q)
(char *p,char *q)

本质上都是传入了字符串的首地址

二、对字符指针进行操作的函数

先贴一个主函数在这里:

main()
{
	char a[] = "hello world111";
	char b[] = "hello world22";
	char c[] = "hello world";
	char *str=c;
	int len1,len2,len3,m;

	printf("at first\na=%s\nb=%s\nstr=%s\n\n", a,b,str);

	len1=strlen(a);
	len2=strlen(b);
	len3=strlen(str);
	printf("The length of a is %d\n",len1);
	printf("The length of b is %d\n",len2);
	printf("The length of str is %d\n\n",len3);

	m=strcmp(a,b);
	if(m==0) printf("a=b\n\n");
		else printf("a!=b and a minus b is %d\n\n", m);

	strcpy(b, str);
	printf("after copying str to b, b = %s\n\n", b);

	strcat(a,b);
	printf("after linking b to the a,a = %s\n", a);

}
对于字符串,我们通常需要进行以下操作:

1.测量字符串的长度(不含'\0'):strlen函数

具体原理是逐个扫描,扫描到'\0'字符为止

int strlen(char *s)
{
	for(int i=0;*s++;i++);
	return i;
}

2.比较两个字符串是否“相等”:strcmp函数

这里的相等指的是每一个字符(直到'\0\为止)都相等。
如果字符串相等,则返回0;
如果不相等,则比较第一次出现不同的字符的ASCII码并相减,并返回差值(前者减后者)
函数如下:

int strcmp(char *s, char *t)
{
	while(*s++==*t++ && *s!='\0');
	return (*(--s)-*(--t));
}

3.将一个字符串的所有内容“复制粘贴”到另一个字符串中:strcpy函数

需要注意的是,strcpy函数通常是将较“短”的字符串复制粘贴到较“长”的函数中,否则可能会出问题(不然我de了一晚上的bug哪来的)
经过一次次的化简之后:

void strcpy(char *s, char *t)
{
	while (*s++ = *t++);
}

(ps.第一次感受到了代码简洁的美)

4.将一个字符串中的内容“连接”在另一个的后边:strcat函数

原理是先令被连接字符串的指针先指向自己的'\0'处,再进行连接。

void strcat(char *s, char *t)
{
	while(*s++!='\0');
	s--;
	while(*s++=*t++);
}

以上便是4个常用的利用字符指针对字符串进行的函数操作。(拖了好长时间终于想起写这个了)

posted @   泽康  阅读(50)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示