关系运算
> >= < <= == !=
p>q
p-q
前提: 同一类型的指针
表示之间差了几个基类型
p+q //指针不能做加法运算
迭代
b
e
1 2 3 4 5 6 7 8 9 10
mid = begin + (e-b+1)/2;
二分查找 用递归方式实现
int sum(int n)
{
if (n == 1)
{
return 1;
}else
{
return sum(n-1) + n;
}
}
sum(100) = sum(99) + 100;
|----- sum(98) + 99
递归: //hanoi
二分查找
快速排序法:
1.选一个基准值a[0]
2.从右边找比基准值小的,作为end
3.从左边找比基准值大的,作为begin
4.交换找到的值
5.重复2-4步骤,直到begin与end相遇
6。此时将相遇位置上的值与基准值交换
7.针对小、大的一部分,分别继续快速排序递归调用
指针 + 一维字符型数组
char s[] = "hello";
char *p = s; //s数组名 --- 代表 数组首元素的地址
//s[0] --->类型 char型
//&s[0] --->char * //地址类型
int puts(const char *s);
const char * s;
const int a; //只读变量
int a = 10;
const int *p = &a; //表示 基类型 为只读
p --- 指针变量 --本身的类型 int *
a --- int型变量 --本身类型 int
p = &a;
const int *p = &a;
int const *p = &a; //就近原则 -- 离谁近,就限定谁的
int *const p = &a; //限定p为只读
const int * const p = &a; //p不能被修改,指向的目标类型不能被修改
//(是不能通过*p)
int puts(const char *s)
{
}//const char *s --在函数里面 不能通过*s修改到外面的数据
好处:
1.可以接收 字符数组名 //char *
也可以接收 字符串常量 //const char *
提高了参数的适用性
2.避免了 可能出现的修改的操作
可以将 运行时的错误,提前到 编译时发现
const char * p 可以用来保存字符串常量的地址