• 如何判断一个变量是不是指针


    1.编写一个程序判断一个变量是不是指针?

    拾遗
    -C++中仍然支持C语言中的可变参数函数
    -C++编译器的匹配调用优先级
    1.重载函数
    2.函数模板
    3.变参函数

     

    #include <iostream>
    #include <string>
    
    using namespace std;
    
    class Test
    {
    public:
        Test()
        {
        }
        virtual ~Test()
        {
        }
    };
    
    template
    <typename T>
    bool IsPtr(T* v) // match pointer
    {
        return true;
    }
    
    bool IsPtr(...)  // match non-pointer
    {
        return false;
    }
    
    
    int main(int argc, char *argv[])
    {
        int i = 0;
        int* p = &i;
    
        cout << "p is a pointer: " << IsPtr(p) << endl;    // true
        cout << "i is a pointer: " << IsPtr(i) << endl;    // false
    
        Test t;
        Test* pt = &t;
    
        cout << "pt is a pointer: " << IsPtr(pt) << endl;    // true
        cout << "t is a pointer: " << IsPtr(t) << endl;    // false
    
        return 0;
    }

     

    #include <iostream>
    #include <string>
    
    using namespace std;
    
    class Test
    {
    public:
        Test()
        {
        }
        virtual ~Test()
        {
        }
    };
    
    template
    <typename T>
    char IsPtr(T* v) // match pointer
    {
        return 'd';
    }
    
    int IsPtr(...)  // match non-pointer
    {
        return 0;
    }
    
    #define ISPTR(p) (sizeof(IsPtr(p)) == sizeof(char))
    
    int main(int argc, char *argv[])
    {
        int i = 0;
        int* p = &i;
    
        cout << "p is a pointer: " << ISPTR(p) << endl;    // true
        cout << "i is a pointer: " << ISPTR(i) << endl;    // false
    
        Test t;
        Test* pt = &t;
    
        cout << "pt is a pointer: " << ISPTR(pt) << endl;    // true
        cout << "t is a pointer: " << ISPTR(t) << endl;    // false
    
        return 0;
    }
  • 相关阅读:
    2、selinux服务的操作
    1、添加nginx到全局变量中
    linux每日命令(1):which
    QT重载基类绘制函数并在基类绘制结果基础上进行子类的绘制
    QT信号槽无法正常通信的原因
    mapgis6.7+加密狗+二次开发SDK库
    KMP算法参考及C语言实现
    elastic search
    RabbitMq docker集群
    RabbitMq安装
  • 原文地址:https://www.cnblogs.com/-glb/p/12026137.html
Copyright © 2020-2023  润新知