整理一下学过的易忘(易错)知识点

· · 个人记录

“&”和“*”的用法

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;
}

快速排序

先留个坑~~