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;
    }
  • 相关阅读:
    (SenchaTouch+PhoneGap)开发笔记(2)开发环境搭建二
    Sql语句复习
    冒泡排序
    微信开发订阅号(ASP.NET MVC4+jquery mobile+AppHarbor发布)
    Ext4 ComboBox组件使用
    ExtJs 进度条(轮询)
    如何替换掉.net toolStrip控件溢出按钮背景图
    easyui-menu 宽度自适应
    Python之入门学习
    servlet和filter的区别
  • 原文地址:https://www.cnblogs.com/-glb/p/12026137.html
Copyright © 2011-2022 走看看