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

  • 思路:模板函数 + 可变参数 + sizeof(函数)
 #include <iostream>
#include <string> using namespace std; template<typename T>
char IsPtr(T* p)
{
return 'c';
} int IsPtr(...)
{
return ;
} #define ISPTR(p) (sizeof(IsPtr(p)) == sizeof(char))
/*
使用sizeof的原因是:可变参数是C语言的概念,对类对象不能进行处理,如果是类指针就会出现段错误
所以使用sizeof,根据返回值类型判断,因为调用那个函数是在编译期就确定的
*/
int main()
{
int* p = NULL;
int q = ; cout << "ISPTR(p) = " << ISPTR(p) <<endl;
cout << "ISPTR(q) = " << ISPTR(q) <<endl; return ;
}

C++语法小记---如何判断一个变量是不是指针的更多相关文章

  1. javascript判断一个变量或对象是否存在

    判断一个变量或对象是否存在,是一种常用的操作.我这里收集了几种. //1. 最常用的一种方法.if(typeof v == 'undefined'){ console.log("v is u ...

  2. Javascript如何判断一个变量是数字类型?

    isNaN()不能判断一个变量是否为数字类型,isNaN(123)值为false,isNaN('123')值也为false.isNaN() 的实际作用跟它的名字isNaN并不一致,isNaN(NaN) ...

  3. shell判断一个变量是否为空

    判断一个变量是否为空 . 1. 变量通过" "引号引起来 如下所示:,可以得到结果为 IS NULL. #!/bin/sh para1= if [ ! -n "$para ...

  4. type,isinstance判断一个变量的数据类型

    type,isinstance判断一个变量的数据类型 import types type(x) is types.IntType # 判断是否int 类型 type(x) is types.Strin ...

  5. 如何判断一个变量是数组Array类型

    在很多时候,我们都需要对一个变量进行数组类型的判断.JavaScript中如何判断一个变量是数组Array类型呢?我最近研究了一下,并分享给大家,希望能对大家有所帮助. JavaScript中检测对象 ...

  6. empty是判断一个变量是否为“空”,而isset 则是判断一个变量是否已经设置

    1.echo和print的区别php中echo和print的功能基本相同(输出),但是两者之间还是有细微差别的.echo输出后没有返回值,但print有返回值,当其执行失败时返回flase.因此可以作 ...

  7. shell中判断一个变量是否为0或者为某个具体的值

    需求说明: 在实际写脚本的过程中,需要判断某个变量的值是否为某个数字, 比如,判断某个进程的数量是否为0用来确定进程是否存在,这样的情况. 简单来说,算术比较. 测试过程: 通过以下的脚本来判断mys ...

  8. 分享一个js技巧!判断一个变量chat_websocket是否存在。

    注意!!! 判断一个变量chat_websocket是否存在:if( "undefined" == typeof(chat_websocket) || null == chat_w ...

  9. 【shell】判断一个变量是否为空

    #!/bin/bash argv=" if [ -z "$argv" ] then echo "argv is empty" else echo &q ...

随机推荐

  1. Qt布局的简单介绍

    1  介绍 参考视频:https://www.bilibili.com/video/BV1XW411x7NU?p=25 布局的好处:布局之后,改变主窗口大小,其余窗口可以自适应. 2  布局分类 垂直 ...

  2. SSH网上商城三

    现在我们要实现下面的需求: 当用户点击左侧二级菜单选项的时候,在右侧要显示对应的该二级菜单项下面存在哪些商品,例如点击潮流女装,要在右侧分页显示该潮流女装下对应哪些商品 1.要分页显示 首先要获得该二 ...

  3. python计算图像信息熵

    import cv2 import numpy as np import math import time def get_entropy(img_): x, y = img_.shape[0:2] ...

  4. Dysregulation of Exosome Cargo by Mutant Tau Expressed in Human-induced Pluripotent Stem Cell (iPSC) Neurons Revealed by Proteomics Analyses(蛋白质组学揭示了人诱导的多能干细胞(iPSC)神经元中表达的突变Tau对外泌体的失调) 解读人:梁玉婷

    期刊名:MCP 发表时间:(2020年4月) IF:4.828 单位:Skaggs School of Pharmacy and Pharmaceutical Sciences, University ...

  5. Nginx功能详细介绍(大而全)

    Nginx介绍 Nginx是C语言开发的. HTTP和反向代理Web服务器. Nginx ⼜能做什么事情(应⽤场景) Http服务器(Web服务器) 性能⾮常⾼,⾮常注重效率,能够经受⾼负载的考验. ...

  6. 什么是EL表达式?

    1.什么是EL表达式? EL(Expression Language) 是为了使JSP写起来更加简单.表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简 ...

  7. 执行dotnet *.dll启动项目,如何修改环境变量----ASPNETCORE_ENVIRONMENT

    docker环境: 启动容器时,添加参数:-e " ASPNETCORE_ENVIRONMENT=Development" windows系统: 命令行,以管理员身份运行:setx ...

  8. Java 内存回收机制

    当执行构造方法生成一个对象时,需要占用各种系统资源.当生成的对象不再使用时,就需要返回给操作系统,以免资源的泄露.在各种系统资源中,最常使用的就是内存.Java运行时系统通过垃圾收集周期性地释放无用对 ...

  9. HTML5(五)Geolocation

    HTML5 Geolocation 定位用户的位置 HTML5 Geolocation API 用于获得用户的地理位置. 鉴于该特性可能侵犯用户的隐私,除非用户同意,否则用户位置信息是不可用的. 注意 ...

  10. Kail系统更新指令

    0x00源更新 国内更新源 leafpad /etc/apt/sources.list 然后复制粘贴下面的源 #kali官方源 deb http://http.kali.org/kali kali-r ...