整理一下学过的易忘(易错)知识点
“&”和“*”的用法
char a[20]; //定义一个有20个元素的字符数组
scanf("%s",a); //读取字符串时不用加“&”
scanf("%c",a); //单独使用数组名称时,指的是指向首元素的指针,不用加“&”
scanf("%c",&a[2]); //明确指数组中的某个元素时要加“&”
char *ptr = a; //定义数组时的“*”也可理解成 char* ptr = a
ptr = &a[2]; //"&"获取了a[2]的地址,“=”将其赋给ptr
*ptr = A; //*ptr修改ptr指向的a的值
printf和scanf的转换说明
printf: https://www.runoob.com/cprogramming/c-function-printf.html
scanf: https://www.runoob.com/cprogramming/c-function-scanf.html
(来源:菜鸟教程)
辗转相除法
int gcd(int a,int b){
reutrn b == 0 ? a : gcd(b,a%b);
}
冒泡排序
/* 该函数应接受指向一个数组的首元素的指针ptr1,
指向第二个元素的指针ptr2,指向末元素的指针end */
void bsort(int *ptr1,int *ptr2,int *end)
{
if(ptr1 < end){
if(*ptr1 < *ptr2){
int temp = *ptr2;
*ptr2 = *ptr1;
*ptr1 = temp;
}
bsort(ptr1+1,ptr2+1,end);
bsort(ptr1,ptr2,end-1);
}
else return;
}
快速排序
先留个坑~~