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是指针
C:型参用指针,实参都用数组
型参:fun(char *p)
实参:fun(a)
D:型参和实参都用指针
型参:fun(char *p)
实参:fun§
*/
/*#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);
}*/