zoukankan      html  css  js  c++  java
  • 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);
  • 相关阅读:
    Kali 2020.3安装docker和vulhub
    Web渗透——身份管理测试
    Web渗透——配置管理测试
    网站信息收集
    linux修改MAC的方法
    '文件上传总结'
    美杜莎和九头蛇的对比
    渗透测试常见开放端口及利用
    Google hacking 语法
    web渗透测试基本步骤
  • 原文地址:https://www.cnblogs.com/quanxi/p/6855903.html
Copyright © 2011-2022 走看看