• C和指针读书笔记一


    1:整型都分为singed和unsigned两种版本

    长整型至少跟整型一样长,整型至少应该和短整型一样长。

    2:枚举

    enum Jar_Type {CUP,PINT...};

    3:注意检查数组下标值

    4:const关键字

    int const a;

    const int a;

    都把a声明为不能修改值的整数

    int const *pi;

    指向整型常量的指针,可以修改指针值但是不能修改指向的值。

    int *const pi;

    指向整型的常量指针,指针不可以改变,但是可以修改它指向的整型的值。

    int const * const ccpi;

    指针和值都不能修改。

    5:static关键字:

    (1)用于函数定义或者代码块外的便利声明,用于修改标示符的链接属性。函数或变量只能在它们的源文件中使用

    (2)当用于代码块外部的变量声明的时候,用于修改变量的存储类型,从自动变量修改为静态变量。变量在程序执行之前创建,并且在程序的整个执行期内一直存在。

    6:定义类型的新名字的时候使用typedef而不是#define

    7:移位操作

    在c语言中不存在无符号右移和左移

    左移都是用0填充右边位数。而右移的时候有两种:逻辑移位用0填充,算术移位用1填充

    8:确保指针初始化

    9:NULL指针

    10:

    清除一个数组内容

    float values[N_VALUES];

    float *vp;

    for(vp=&values[0],vp<&values[N_VALUES];)

          *vp++=0;

    11:数组和指针

    array[n]

    *(array+n)

    12:如果使用正确,下标绝不会比指针更有效率,但指针有时比下标更有效率

    13:

    void strcpy(char *buffer,char const *string)

    {

    while((*buffer++=*string++)!='\0')

    }

    14:二维数组

    int matrix[3][10]

    matrix+1指向包含10个整型元素的数组的指针。

    *(matrix+1)指向常量的指针

    *(*(matrix+1)+5)相当于matrix[1][5]

    15:字符串

    复制字符串char * strcpy(char *dst,char const *src);

    字符串连接:char *strcat(char *dst,char const *src)

    char *strncpy(char *dst,char const *src,size_t len)

    如果src长度大于len,只有len个字符复制到dst中,注意,它的结果不会以NUL字节结尾。

    查找字符:char * strchr(char const *str,int ch);返回指向该位置的指针

    查找任何几个字符:char *strpbrk(char *str,char const *group)

    查找子串:char *strstr(char const *s1,char const *s2);

    查找字符串前缀:size_t strspn(char const *str,char const * group);

    返回str起始部分匹配group中任意字符的个数。

    size_t strcspn(char const *str,char const * group)

    起始部分不与group任何字符匹配的字符数

    strtok(char * str,char const *sep);

    void print_tockens(char *line)

    {

    static char whitespace[]="\t\f\r\v\n";

    char *token;

       for(token=strtok(line,whitespace);token!=NULL;token=strtok(NULL,whitespace))

           printf("next token is %s",token);

    }

    内存操作:

    memcpy()

    memmove()

    memchr()

    memset()

    16:结构声明

    typedef struct {

    ....

    }Simple;

    Simple x;

    17:内存分配

    int *pi;

    pi=malloc(25*sizeof(int))

    经典格式:

    #define MALLLOC(num,type) (type *)alloc((num)*sizeof(type));

    int *new_memory;

    new_memory=MALLOC(25,int);

    18:高级指针

    int * f():一个函数,返回值类型是一个指向整型的指针。

    int (*f)():f是一个函数指针,它指向的函数返回一个整型

    int *(*f)():f是一个函数指针,它指向的函数返回一个指向整型的指针

    int *f[]:f是一个数组,它的元素类型是指向整型的指针

    int (*f[])():*f[]得到f是某种元素的指针的数组。所以f是一个数组,数组元素的类型是函数指针,函数的返回值是整型值。

  • 相关阅读:
    饿汉模式单例模板
    QT高级01----自定义日志工具
    QT基础01----添加应用程序图标
    QML博客转载
    QML---自定义滚动条
    Mycat的做分库正确步骤
    Spring Cloud sentinel使用总结
    SpringCloud之Gateway原理解析(二)--调用过程
    SpringCloud之Gateway原理解析(一)--准备
    SpringCloud之Feign注解@EnableFeignClients
  • 原文地址:https://www.cnblogs.com/macula7/p/1960529.html
Copyright © 2020-2023  润新知