zoukankan      html  css  js  c++  java
  • 如何判断一个变量是不是指针

    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;
    }
    复制代码
     
  • 相关阅读:
    Microsoft 基准安全分析器(MBSA)
    神奇的C++模版
    Windows下的Memcache安装
    BisonFlex 笔记
    虚函数背后的秘密
    如何切换SecureCRT的帐号
    动态生成JS 实现 .NET 网站广告管理
    fatal error C1853 预编译头文件来自编译器的早期版本 解决方法
    解决 unresolved external symbol 无法解析 _send@16
    linux远程登录
  • 原文地址:https://www.cnblogs.com/bruce1992/p/14322437.html
Copyright © 2011-2022 走看看