指针:
- 指针的加减法运算:指针加减一,是加减一个(int、char…)指针类型。两个指针间不可以进行相加相乘相除取余等运算,否则会出现一个野指针。
*dest = *ch;
dest++;
ch++;
指针+1 相当于指向数组下一个元素 内存地址变化了sizeof(char)
- 指针数组:
指针数组内储存的是指针,是特殊的二维数组模型
2、通过数组引用元素的方法:(1)下标法,(2)指针法 (指针操作数组时下标允许时负数)
一级指针加一个偏移量,跳过一个元素;二级指针加偏移量跳过一个数组大小。
3、一级指针的值:*pp
变量的值:**pp
二级变量的值:&p
*ppp=pp=&p
4、字符串去空格
(1)利用辅助空间,定义字符串确定字符样式:将字符串挪到新的字符串——拷贝
(2)用指针指向字符串,辅助指针判断空格向后覆盖,遇到空格向后延。
char* ftemp = ch; //用来遍历字符串
char* rtemp = ch; //记录非空格字符串
while (*ftemp)
if (*ftemp != ' ')//遇到空格跳过
{
*rtemp = *ftemp;
rtemp++;
}
ftemp++;
5、指针作为返回值
while (*str)
{
if (*str == ch)
return str;
str++;
}
6、查找字符串:建立3个辅助指针
(1)遍历源字符串指针
(2)记录相同字符串的首地址
(3)读取字符串
若遍历失败,则回滚
7、用指针存储字符串
8、指针作函数参数
9、const修饰指针变量——可以修改指针变量的值,但不可以修改指针变量指向的内存空间的值
10、求字符串出现的次数:用while和do while循环
11、统计字符出现个数:(1)用数组,开辟空间放固定字符,(2)字符直接插入排序
12、指针间接赋值:
(1)建立两个变量,普通变量,指针变量;
(2)建立关系,指针变量=&普通变量;
(3)通过*运算符赋值:*指针变量=值;
字符串处理函数:
拷贝:strcpy strncpy找字符串/0位置的拷贝操作
字符串比较:strcmp strncmp(比较前n个字符) 比较字符ascll码,相等输出0,不等则为1、-1。
字符串格式化:sprintf(数组名,字符串) sscanf(数组名,表达式,&地址)
字符串查找:strchr strstr返回地址,返回值类型为指针
字符串分割:strtok 分割字符串但会破坏源字符串,用/0代替分割
流水灯学习:
制作流水灯的方法:
- a[]={0x01…};P0=a[i];i++;~p;(1111 1110;1111 1101……)
- 用左循环、右循环运算符 <<;>>
- 用循环位移函数实现:
位移函数_crol_与_cror_函数