(C++ 语法)请问对空指针成员取地址合法吗?
  • 板块学术版
  • 楼主xiaosuan
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/9/22 18:17
  • 上次更新2024/9/22 20:36:17
查看原帖
(C++ 语法)请问对空指针成员取地址合法吗?
529574
xiaosuan楼主2024/9/22 18:17

最近在写和指针有关的代码,发现需要很多判空的操作,又不想用成员指针,于是就写了这个东西。但不知道会不会 RE 或者出现 UB,就来问一下。

我没有在 cppreference.com 上找到相关的介绍,百度的资料也很少。

#include <cstdio>

struct S {
	int num;
};

S a;

template <typename val_T>
val_T func(S *obj, const val_T * valp, const val_T &saferet) {
	if (obj) {
		return *valp;
	} else {
		return saferet;
	}
}

int main() {
	a.num = 1;
	S *ptr1 = &a;
	int num1 = func(ptr1, &ptr1 -> num, 2);
	S *ptr2 = NULL;
	int num2 = func(ptr2, &ptr2 -> num, 3); // 注意这里
	printf("%d %d\n", num1, num2);
	return 0;
}
2024/9/22 18:17
加载中...