• C语言笔试常考知识点


    1. const 关键字

        a)  const int a;

        b)  int const a;

        c)  const int *a;

        d)  int * const a;

        e)  int const * const a;

    解析:

        a)  a为一个int型变量,在它被定义时就应当对其初始化,因为以后就没有机会再去改变它了。

        b)  与 a) 是一个意思,const 与 int 的位置可以互换。

        c)  const 与 int 修饰的都是 (*a) ,这里的a是一个指向 int 型变量的指针,指针 a 的值可以被修改,(*a) 即 a 指向的变量不能被修改。

        d)  const 修饰 a, 而int 修饰 (*a) ,这里的a是一个指向 int 型变量的指针,指针 a 的值不能被修改,(*a) 即 a 指向的变量可以被修改。 

        e)  指针 a 的值与 (*a)即a指向的变量均不能被修改。

    总结:

        1)  如果 const 与 int 是挨在一起的,中间没有*,则两者的位置是可以互换的。

        2)  如果 const 或是 int 之后是*,则 const 或是 int 修饰的是(*a),即修饰的是指针 a 指向的变量。

    2. (*((void (*)( ))0x80004000)) ( )

    解析:

        先看 (void (*)( ))0x80004000 。

        其中的 void (*)( ) 是函数指针类型,该函数的形参为空,返回值类型为 void 。

        于是,(void (*)( ))0x80004000 就是表示,将 0x80004000 强制转换为 void (*)( ) 类型的函数指针,即0x80004000是某函数的入口地址。

        然后,请回忆一下 (*p)() 是什么意思?没错,这是用函数指针调用函数的形式。

        那么,(*((void (*)( ))0x80004000)) ( ) 就是表示,调用某一个函数, 该函数的入口地址为0x80004000,该函数的形参为空,无返回值。

     

    3. void * ( * (*fp1)(int))[10]; 

        float (*(* fp2)(int,int,int))(int);

        int (* ( * fp3)())[10]();

        分别表示什么意思? 
    解析:                                                           

        1. void * ( * (*fp1)(int))[10];   fp1是一个指针,指向一个函数,这个函数的参数为int型,函数的返回值是一个指针,这个指针指向一个数组,这个数组有10个元素,每个元素是一个void*型指针。

        2. float (*(* fp2)(int,int,int))(int);   fp2是一个指针,指向一个函数,这个函数的参数为3个int型,函数的返回值是一个指针,这个指针指向一个函数,这个函数的参数为int型,函数的返回值是float型。 

        3. int (* ( * fp3)())[10]();   fp3是一个指针,指向一个函数,这个函数的参数为空,函数的返回值是一个指针,这个指针指向一个数组,这个数组有10个元素,每个元素是一个指针,指向一个函数,这个函数的参数为空,函数的返回值是int型。 

    4. 有关指针的数据类型的小结

    定义 含义
    int i; 定义整型变量i
    int *p; p为指向整型数据的指针变量
    int a[n]; 定义整型数组a,它有n个元素
    int *p[n]; 定义指针数组p,它由n个指向整型数据的指针元素组成
    int (*p)[n]; p为指向含n个元素的一维数组的指针变量,每一个元素均为整型数据
    int (*p)[n]();

    p为指向含n个元素的一维数组的指针变量,每一个元素均为一个函数指针,该函数无形参,返回int型数据

    int f(); f为带回整型数值的函数
    int *p(); p为带回一个指针的函数,该函数指向整型数据
    int (*p)(); p为指向函数的指针,该函数返回一个整型数据
    int **p; p为一个指针变量,它指向一个指向整型数据的指针变量

    参考文档:《彻底搞定C指针》

  • 相关阅读:
    《大话数据结构》第1章 数据结构绪论 1.2 你数据结构怎么学的?
    伍迷七八月新浪微博集锦
    《大话数据结构》第9章 排序 9.7 堆排序(下)
    《大话数据结构》第3章 线性表 3.8.2 单链表的删除
    《大话数据结构》第9章 排序 9.5 直接插入排序
    《大话数据结构》第9章 排序 9.8 归并排序(上)
    《大话数据结构》第2章 算法基础 2.9 算法的时间复杂度
    《大话数据结构》第1章 数据结构绪论 1.1 开场白
    《大话数据结构》第9章 排序 9.1 开场白
    [AWS] Assign a public IP address to an EC2 instance after launched
  • 原文地址:https://www.cnblogs.com/outs/p/5103868.html
Copyright © 2020-2023  润新知