• C语言——指针


    指针类型的长度:

    printf("%d %d
    ", sizeof(double), sizeof(double *));    //所有类型的指针都是4,而sizeof(char)是1,sizeof(int、float)都是4

    动态分配数组内存大小:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        int n = 1;
        scanf("%d", &n);
        int *p = (int *) malloc(n * sizeof(int));    //动态创建一维数组
        p[n - 1] = 100;
        printf("%d
    ", p[n - 1]);
        free(p);    //free是malloc函数的逆过程,用于释放掉给指针分配的空间
        return 0;
    }
    
    int m, n;
    scanf("%d %d", &m, &n);
    int *p = (int *) malloc(m * n * sizeof(int));    //创建二维数组
    p[m * n + n] = 100;
    printf("%d
    ", p[m * n + n]);
    free(p);

    操纵指针:

    *p++;//由于没有打括号,所以运算符*、++都是操纵变量p
    若p为一个指针,那么p[i]:实质上,C的编译器会将p[i]解析成*(p+i),使得表达式更为简单

    指向函数的指针(函数式编程):

    #include <stdio.h>
    int func(int a)
    {
        return -1;
    }
    int function(int a)
    {
        return a;
    }
    int main()
    {
        int (*p1)(int) = func;
        printf("%d
    ", p1(1));
        p1 = function;
        printf("%d
    ", p1(100));
    }

    用指针删除字符串中指定字符(除了指针版,还有数组版、下标指针版:*pi,*pj):

    char *delChar(char *s, char c)
    {
        int i, j;//在遇到c之前,j = i;遇到c之后,j = i - 1;
        for(i = 0, j = 0; *(s + i) != 0; i++)
        {
            if(*(s + i) != c)
            {
                *(s + j) = *(s + i);
                j++;
            }
        }
        *(s + j) = '';
        return s;
    }

    求一个短语中,单词的个数:

    int WordCount(char *p)
    {
        int n = 0;
        for(; *p != ''; p++)
        {
            if(*p == ' ') continue;//È¥µôÿ¸öµ¥´ÊÇ°ÃæµÄ¿Õ¸ñ
            if(isalpha(*p))
            {
                n++;
                for(; *p != '' && isalpha(*p); p++);
            }
        }
        return n;
    }

    内存管理:

    函数<stdlib.h>:

    • void *calloc(int num, int size);
    • void free(void *address);
    • void *malloc(int num);
    • void *realloc(void *address, int newsize);
  • 相关阅读:
    《JS权威指南学习总结--3.8类型转换》
    php基础-1
    django的url分配和url捕获参数
    Django项目的创建和设计模式
    1.Tensorflow的基本概念:
    linux下安装pycharm
    url参数和字典的相互转化
    MySQL数据库一
    利用伪装文件夹实现对文件的加密-当然如果你懂,这是很好破解的,只是障眼法而已
    数组有N+M个数字, 数字的范围为1 ... N, 打印重复的元素, 要求O(M + N), 不可以用额外的空间
  • 原文地址:https://www.cnblogs.com/quanxi/p/6855903.html
Copyright © 2020-2023  润新知