分享免费的编程资源和教程

网站首页 > 技术教程 正文

指向字符串的指针(超详解)

goqiw 2024-12-06 14:31:37 技术教程 36 ℃ 0 评论

/*

1)什么是字符串

用双引号括起来的零个或多个字符"abcd"

2)字符串的结束符号:

\0,它是一个字符,而不是一个字符串

3)字符串的输出;

printf("%s",数组名)

puts()

输入:

scanf

gets

4)strlen:用来测量一个字符串中所包含的字符个数

5)如果一个指针p指向了一个字符串,那我们就说p就是一个指向字符串指针

定义格式:char *指针名 ,如char *p

赋值:char *p = "abcd" or char *p; p = "abcd";

可以把一个字符串直接赋给一个指针,但这并不说明把字符串中的所有字符都赋给了p,

实际上p永远只能指向一个字符,指针p刚开始指向的是字符串的第一个字符

char a[10] = { "1234" }, *p = a;

a---->1<---p

2

3

4

\0

6)指向字符串指针的输出

1:puts(指针名)

2:printf("%s",指针名)

输出原理:以当前指针的位置开始,一直向下输出,直到遇到\0为止

*/

#include<stdio.h>
#include<string.h>
void main()
{
	char a[100] = { "abcd123" }, *p = a+4;
	printf("%s\n", p);//123
	printf("%d", strlen(p));//3
}

/*

将一个指向字符串的指针移动到一个数组的末尾

p = a + strlen(数组名) - 1;

*/

#include<stdio.h>
#include<string.h>
void main()
{
	char a[100] = { "abcd123" }, *p = a;
	p = a + strlen(a) - 1;
	printf("%s\n", p);
	printf("%d", strlen(p));
}

/*

*p代表的是字符串中的某一个字符,所以输出参数应该是%c

只有输出字符串才用%s

如printf("%s", p);printf("%c",*p)

*/

#include<stdio.h>
#include<string.h>
void main()
{
	char a[100] = { "abcd123" }, *p = a;
	while (*p)
	{
		*p = *p + 1;
		p++;
	}
	puts(a);//bcde234
}
#include<stdio.h>
#include<string.h>
void main()
{
	char s[] = { "\n123\\" };
	printf("%d\n", strlen(s));//5
	printf("%d", sizeof(s));//6,其是用来返回一个数组的大小包含\0
}


/*

1)一维字符型数组就是字符串

2)以数组作为函数的参数,型参数组就是实参数组,实参数组也就是型参数组,

因为数组名是首地址,实参把数组的地址传给了实参数组

3)如果把一个数组的首地址赋给了某个指针,则这个指针就可以当数组使用

4)以字符串作为函数参数的几种格式

A:型参和实参都用数组

型参:fun(char a[])

实参:fun(a)

B:型参用数组,实参用指针

型参:fun(char a[])

实参:fun(p)p是指针

C:型参用指针,实参都用数组

型参:fun(char *p)

实参:fun(a)

D:型参和实参都用指针

型参:fun(char *p)

实参:fun(p)

*/

#include<stdio.h>
#include<string.h>
void fun(char *a)
{
	int i;
	for (i = 0; a[i]; i++)
	{
		a[i] = a[i] + 1;
	}
}
void main()
{
	char a[] = "abcd", *p = a;
	fun(p);
	puts(a);
}

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表