C语言平常笔记

C语言平常笔记

  1. 在在自定义函数中使用sqrt函数,必须将开方数,重定义如(double)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    void n_prime(int a)
    {
    int x=0;
    for(x=2;x<sqrt((double)x);x++)
    {
    if(0==a%x)
    {
    printf("this is not a prime");
    }
    }
    printf("this is a prime");
    }

    int main()
    {
    int num=0;
    printf("请输入判断的数:");
    scanf("%d",&num);
    n_prime(num);
    return 0;
    }
  2. getchar的用法:如果单独只用gerchar(),则只取一个字符。把getcahr 放入循环中则可读取输入进去的所有值,包括(‘\n’,’ ‘),但是scanf,只读取缓冲区中‘\n’之前的,\n是因为键盘使用了回车

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    //这是一个计算输入数字中字母,数字,空格,和其他字符的代码
    #include<stdio.h>

    int main()
    {
    char arr;
    int letters=0,numbers=0,spaces=0,others=0;
    printf("请输入查找的字符串:");//存放得到的字符串
    while((arr=getchar())!='\n')//必须放入循环
    {
    if(arr>='a'&&arr<='z'||arr>'A'&&arr<'Z')
    {
    letters++;
    }
    else if(arr>='0'&&arr<='9')
    {
    numbers++;
    }
    else if(' '==arr)
    {
    spaces++;
    }
    else
    {
    others++;
    }
    }
    printf("letters=%d\nnumber=%d\nspace=%d\nothers=%d\n",letters,numbers,spaces,others);
    return 0;
    }
  3. staticu作用:

    3.1 隐藏该语句

    3.2 被static修饰的变量存活时间更长

    3.3 初始化变量为0

  4. typedef

    4.1 取别名: typedef 类型 别名

    1
    2
    3
    4
    5
    //数组起别名
    typedef int array[3];
    array arr={012};//定义的一维数组
    array arr2[3]={012345678};//定义2维数组

  5. 指针大小在32位是4,在64位是8

  6. 输出中间取位

    1
    2
    3
    4
    5
    6
    7
    int a=2;
    printf("%.4d",a);
    //结果位0002
    printf("%4d",a);
    //结果为 2
    printf("%-4d",a);
    //结果为2 (有3个空格)
  7. sqrt() 函数:括号里里面,放变量名

    1
    2
    3
    4
    5
    A=b*b-4*a*c;
    sqrt(b*b-4*a*c);
    //不太行
    sqrt(A);
    //可以
  8. double,可以用来表示整数

  9. 取一个高位数,从头开始取

    1
    2
    3
    4
    5
    6
    //例如

    a=x/10000;
    b=x%1000/100;
    c=x%100/10;
    d=x%10;
  10. 乘法符号不能省略

  11. 如果想使用除法输出小数,先转化再除法

  12. define常量,不用加‘;’

    1
    2
    #define count 5
    //就好了
  13. 局部变量是放在栈区上的,栈区内存的使用习惯是,先使用高地址,再使用低地址

  14. size_t:它是为了方便系统之间的移植而定义的,不同的系统上,定义size_t 可能不一样。size_t在32位系统上定义为 unsigned int,也就是32位无符号整型。在64位系统上定义为 unsigned long ,也就是64位无符号整形

  15. 清空外部控制台:system("cls");,头文件是:stdlib.h

  16. void函数return ;

  17. 对于结构体的引用

    • 若使用地址使用结构体内的成员,使用->
    • 若直接通过使用结构体的名字则使用:.
  18. 对于链表的使用,应该将所有元素都初始化

  19. 使用malloc时,需要判断是否申请内存成功

  20. 判断存储方式

    • 大端存储:低位存在高地址
    • 小端存储:低位存放在低地址
    • 用共同体判断存储方式
  21. 枚举类型

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    enum sex{man, woman};

    int main()
    {
    int a = 0;
    enum sex chg = 0;
    scanf("%d", &a);
    chg = a == 0 ? man : woman;
    printf("chg=%d", chg);
    return 0;
    }
    //如果chg=man,打印0
    //如果chg=woman,打印1
  22. 3.14是double 类型,3.14f是float类型

  23. 内存释放:只是将使用的部分的内存打上可回收的标记,还是可以修改内存所存的元素

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    int main()
    {
    int n;
    int i=0;
    printf("Input n:");
    scanf("%d", &n);
    int* p = (int*)calloc(n, sizeof(int));
    while (i < n)
    {
    p[i++] = i;
    }
    i = 0;
    while (i < n)
    {
    printf("%d ", p[i++]);
    }
    free(p);
    p = NULL;
    return 0;
    }

    image-20221209152359574

  24. mollioc calloc realloc函数:

    1
    2
    3
    int* p=(int *)calloc(n,size);//n:有多少个连续的int,size:只指针对应的类型的大小
    int* p1=(int *)malloc(n*sizeof(int));
    int* p=(int *)realloc(p,n*sizeof(int));//n:可用于改变内存(重新申请)

    使用calloc会自动初始化,malloc不会

    使用realloc有两种情况,小扩容,大扩容,小扩容是在原有的内存基础上扩容,大扩容会改变位置

    image-20221209153159341

  25. 自己的交换函数,不能交换地址,交换地址对应的值

    1
    2
    3
    4
    5
    6
    7
    void swap ( int *a,  int *b )
    {
    int p;
    p=*a;
    *a=*b;
    *b=p;
    }
  26. 不能再自己的函数里面计算,数组的长度,因为,接受的是首地址

  27. 可以通过字写的程序计算,数组里面的字符(字符串特别适用,数字注意0)


C语言平常笔记
https://tsy244.github.io/2023/05/07/C/C语言平常笔记/
Author
August Rosenberg
Posted on
May 7, 2023
Licensed under