相关疑难解决方法(0)

16
推荐指数
2
解决办法
2760
查看次数

从堆栈地址形成指针范围是不确定的行为?

一些C或C++程序员惊讶地发现即使存储无效指针也是未定义的行为.但是,对于堆或堆栈数组,可以存储一个超过数组末尾的地址,这允许您存储"结束"位置以便在循环中使用.

但是从单个堆栈变量形成指针范围是未定义的行为,如:

char c = 'X';
char* begin = &c;
char* end = begin + 1;

for (; begin != end; ++begin) { /* do something */ }
Run Code Online (Sandbox Code Playgroud)

虽然上面的例子很没用,但是如果某个函数需要一个指针范围,那么这可能很有用,而且你有一个只有一个值来传递它的情况.

这是未定义的行为吗?

c c++ pointers undefined-behavior language-lawyer

9
推荐指数
1
解决办法
710
查看次数

标签 统计

c++ ×2

pointers ×2

undefined-behavior ×2

arrays ×1

c ×1

language-lawyer ×1