C++语法小记---如何判断一个变量是不是指针

本文介绍了一种利用C++模板函数和可变参数结合sizeof操作符来判断一个变量是否为指针的方法。通过定义两个重载的IsPtr函数,一个用于指针类型,另一个用于非指针类型,并利用sizeof的不同返回值来区分两者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

  • 思路:模板函数 + 可变参数 + sizeof(函数)
 1 #include <iostream>
 2 #include <string>
 3 
 4 using namespace std;
 5 
 6 template<typename T>
 7 char IsPtr(T* p)
 8 {
 9     return 'c';
10 }
11 
12 int IsPtr(...)
13 {
14     return 0;
15 }
16 
17 #define ISPTR(p)    (sizeof(IsPtr(p)) == sizeof(char))
18 /*
19     使用sizeof的原因是:可变参数是C语言的概念,对类对象不能进行处理,如果是类指针就会出现段错误
20     所以使用sizeof,根据返回值类型判断,因为调用那个函数是在编译期就确定的
21 */
22 int main() 
23 {
24     int* p = NULL;
25     int q = 0;
26     
27     cout << "ISPTR(p) = " << ISPTR(p) <<endl;
28     cout << "ISPTR(q) = " << ISPTR(q) <<endl;
29 
30     return 0;
31 }

 

转载于:https://www.cnblogs.com/chusiyong/p/11315663.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值