基础概括( 字符串 指针 )
字符串结束的标志是‘\0’ 因此在计算字符串长度是要加上这个隐藏额字符串结束标志。
strlen 是计算字符串的字符数(不是字节数,字数),在计算字符串长度时,是不会计算'\0'的。
strlen的头文件是 #include<string.h>
定义字符串的两种方式:
1,利用数组(使用场合:字符串的内容需要经常修改)
char name[] = "abc"
特点:字符串里边的字符是可以修改的。
2,利用指针 (使用场合:字符串内容不需要修改而且这个字符串经常使用)
char *name = "abc"
特点:字符串其实是一个常量字符串,里边的字符是不能修改的。
保存字符串数组有两种方式:
1,指针数组(不能修改)。
2,二维字符串数组。
指针的作用:能够根据一个地址访问对应的储存空间。
指针变量只能存储地址,所有只有指针来接地址。
指针变量间接修改指向存储空间里成员的值。
int *p 访问指针P指向的存储空间。
*p=10 是从指针所指向的存储空间中赋值。
指针的使用注意:
1,int *p 只能指向int类型数据。
2,指针变量只能存储地址。
3,指针变量为经初始化,不能拿来间接访问其他的存储空间。
把数组名当做指针,说明就是数组的首元素地址给了指针。
数组名就是数组的地址,也是数组首元素的地址。
利用指针指向字符串的首字母,从而访问整条字符串。
char *name = "jack"
指向函数的指针:
void ( *p) ( ); 固定写法;
*p 代表函数名,代表指针变量p将来肯定指向的函数。
函数名后的()代表指针变量p指向函数没有形参。
void 代表指针变量p指向的返回值为空(没有返回值)。
p = &函数;
注意: 这里函数名就是函数的地址。(与数组相同,数组名就是数组的地址)。