首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将指向数组开头的指针与指向数组开头之前的相同类型的指针进行比较是否合法?

将指向数组开头的指针与指向数组开头之前的相同类型的指针进行比较是否合法?
EN

Stack Overflow用户
提问于 2013-07-18 08:41:10
回答 3查看 147关注 0票数 3

这个程序是不是合法的C语言?如果是,请引用其中一种语言标准来支持您的声明(无论哪种方式)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void f(char *p) {
    char *q = p - 1;
    (void)( q < p );
};

int main(void) {
    char arr[] = "Hello";
    f( arr );
}

特别是,我感兴趣的是q < p比较是否合法。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-18 08:45:19

不,它不是。使用一个不指向数组元素的指针或者一个超过数组末尾的指针(例如,不在[&arr[0], &arr[size]]范围内的指针)会调用未定义的行为。

C11标准,6.5.6.8 (“加法运算符”):

如果指针操作数和P+N的结果都指向同一数组对象的元素,或者指向数组对象的最后一个元素之后的元素,则计算不会产生溢出;否则,行为未定义。

(强调我的)

票数 4
EN

Stack Overflow用户

发布于 2013-07-18 08:48:45

不,这不合法。指针必须指向数组,或者指向数组末尾之后的数组,或者为null。

国际标准化组织C11,附录J.2“未定义的行为”说,行为在以下情况下是未定义的:

将指针与数组对象和整数类型相加或相减,得到的结果不会指向相同的数组对象(6.5.6)。

这就是目前的情况。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
char *q = p - 1;

当为p == &arr[0]时,单行具有UB会导致整个程序具有UB。请注意,您不必比较指针或取消引用它或做任何其他事情。减法就足够了。

票数 3
EN

Stack Overflow用户

发布于 2013-07-18 10:10:12

我不知道什么是合法的,但这肯定说不通。P指向数组,这意味着保存数组的地址。Q指向数组前的一个地址块。无论何时比较它们,都是在比较两个连续地址块的地址。结果总是正确的,因为您基本上是在比较p和p-1

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17718596

复制
相关文章
perf基本使用功能
用于实时显示当前系统的性能统计信息。该命令主要用来观察整个系统当前的状态,比如可以通过查看该命令的输出来查看当前系统最耗时的内核函数或某个用户进程
233333
2022/09/26
8320
使用Jmeter进行功能和性能测试
Jmeter 的工作原理是仿真用户向服务器发送请求,并收集服务器应答信息并计算统计信息。
鱼找水需要时间
2023/04/09
1.9K0
使用Jmeter进行功能和性能测试
【软件测试】使用QTP进行功能测试
测试QTP自带的C/S应用程序Flight.exe。 Flight应用程序登录模块需求说明:用户名、密码均为长度至少为4位的非空字符,密码值为mercury。针对用户名、密码的不同出错情况,有不同的错误信息提示(详见Flight.exe)。 (1)针对Flight范例程序,使用等价类划分法完成登录模块的测试用例设计,写出测试用例表Login_TestCases; (2)对用户登录过程进行脚本录制,回放无误后,保存测试脚本为login_Test1。   (3)打开脚本login_Test1,编辑脚本(提示:用到了参数化、VBScript的if结构、添加操作步骤等知识点),使用测试用例表Login_TestCases,完成对Flight程序登录模块的测试,运行测试无误后保存测试脚本为login_Test2。 (4)导出word类型测试报告,保存为LoginTest_Report。 (5)在学习通实验报告题目2中上传一个Word类型附件,其中包含:测试用例表Login_TestCases,测试脚本login_Test1,测试脚本login_Test2,测试报告LoginTest_Report。
NorthS
2023/03/21
1.2K0
perf和火焰图使用方法
perf是linux上的性能分析工具,perf可以对event进行统计得到event的发生次数,或者对event进行采样,得到每次event发生时的相关数据(cpu、进程id、运行栈等),利用这些数据来对程序性能进行分析。
嵌入式与Linux那些事
2023/03/24
3.8K0
perf和火焰图使用方法
使用LoadRunner进行并发测试、压力测试和负载测试
负载测试:找到系统最大的负载能力(通过给系统不断的施压达到饱和状态不能加压为止)
全栈程序员站长
2022/09/09
3K0
使用LoadRunner进行并发测试、压力测试和负载测试
相位测量仪的使用详解
在现代高科技的电子技术中,相位数是最基本的参数之一,相位的准确性就直接与许多其他外参量的测量方案、测量结果都有十分密切的关系,因此相位的准确测量就会显得更为重要。测量相位的方法有多种其中电子计数器测量相位具有精度高、使用方便、测量迅速,以及便于实现测量过程自动化等优点,也同时是相位测量的重要手段之一,其中SYN5607型相位计显得尤为重要。
时频专家
2020/10/30
2.1K0
相位测量仪的使用详解
使用Microsoft.AspNetCore.TestHost进行完整的功能测试
  Microsoft.AspNetCore.TestHost是可以用于Asp.net Core 的功能测试工具。很多时候我们一个接口写好了,单元测试什么的也都ok了,需要完整调试一下,检查下单元测试未覆盖到的代码是否有bug。步骤为如下:程序打个断点->F5运行->通常需要登录个测试账号->查找要调试api的入口->获得断点开始调试=>代码报错?很多时候需要停止调试修改->回到第一步。如此反复循环,做着重复的工作,Microsoft.AspNetCore.TestHost正是为了解决这个问题,它可以让你使用xTest或者MSTest进行覆盖整个HTTP请求生命周期的功能测试。
顾翔
2019/12/11
9240
使用Microsoft.AspNetCore.TestHost进行完整的功能测试
使用locust进行Websocket压力测试和接口压力测试
如果你正在测试一个网站的性能,这个网站是以分层的方式构建的,包括部分和子部分,那么以同样的方式构建负载测试可能会很有用。为此,locust提供了任务集类。它是将执行的任务的集合,与直接在用户类上声明的任务非常相似。
码客说
2022/01/17
6.8K0
使用locust进行Websocket压力测试和接口压力测试
干货 | 搞定 perf 和 gpertools
在Linux下开发是幸福的,尤其是在发生问题的时候。永远忘不了在Windows下应用发生问题时那种无助的感觉。
xjjdog
2021/04/16
3.7K0
干货 | 搞定 perf 和 gpertools
使用Calabash进行Android和iOS UI测试
因为各种事,这篇本来属于上周的拖到了就今天,一篇关于移动端测试工具Calabash的文章,看着篇幅比较小,就接受了。本身精力不在Android和iOS开发,所以也就没按部就班的复原教程中的实例,仅当开阔视野了。
WindCoder
2018/09/19
2.1K0
使用Calabash进行Android和iOS UI测试
使用doctest进行测试
python中的doctest可以运行文档中嵌入的例子,并验证它们能否生成所期望的结果,从而对源代码进行测试。
用户2936342
2018/08/27
1.2K0
使用 postman 进行接口测试
postman 测试接口非常方便,接下来就开始测试 postman 的一些简单用法。
Python碎片公众号
2021/02/26
2.2K0
使用 postman 进行接口测试
使用LoadRunner进行压力测试
本质就是在loadrunner上模拟多个用户同时按固定行为访问web站点。其中固定行为在loadrunner中是通过录制脚本定义的,多个用户同时访问的策略是在loadrunner的场景中定义的
全栈程序员站长
2022/09/07
1K0
使用LoadRunner进行压力测试
使用stress进行压力测试
stress是一款压力测试工具,可以用它来对系统CPU,内存,以及磁盘IO生成负载。
全栈程序员站长
2022/11/18
1.2K0
使用wrk进行压力测试
最近需要对新的服务进行压力测试。比较了ab和jemeter以及wrk。最终选择wrk来作为压力测试工具,可以把cpu压到100%。
Ryan-Miao
2019/01/02
2.1K0
使用Fiddler进行Mock测试
1)在web session 面板中找到对应的请求,然后将其拖到AutoResponder面板中。
全栈程序员站长
2022/08/31
1.4K0
使用Fiddler进行Mock测试
使用 JMeter 进行压力测试
压力测试是每一个Web应用程序上线之前都需要做的一个测试,他可以帮助我们发现系统中的瓶颈问题,减少发布到生产环境后出问题的几率;预估系统的承载能力,使我们能根据其做出一些应对措施。所以压力测试是一个非常重要的步骤,下面我带大家来使用一款压力测试工具JMeter。
庞小明
2019/05/25
1.7K0
使用 JMeter 进行压力测试
一.前言 压力测试是每一个Web应用程序上线之前都需要做的一个测试,他可以帮助我们发现系统中的瓶颈问题,减少发布到生产环境后出问题的几率;预估系统的承载能力,使我们能根据其做出一些应对措施。所以压力测试是一个非常重要的步骤,下面我带大家来使用一款压力测试工具JMeter。 二.关于JMeter Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小
晓晨
2018/06/22
1.8K0
如何使用MyJWT对JWT进行破解和漏洞测试
MyJWT是一款功能强大的命令行工具,MyJWT专为渗透测试人员、CTF参赛人员和编程开发人员设计,可以帮助我们对JSON Web Token(JWT)进行修改、签名、注入、破解和安全测试等等。
FB客服
2021/03/09
3.3K0
使用Angular CLI进行单元测试和E2E测试
单元测试. angular cli使用karma进行单元测试. 首先执行ng test --help或者ng test -h查看帮助. 执行测试的话就执行ng test即可, 它会执行项目里所有的.s
solenovex
2018/03/29
2.8K0
使用Angular CLI进行单元测试和E2E测试

相似问题

在ApacheJ测量仪中执行基于Java的Selenium WebDriver测试

12

如何解决ApacheJ测量仪安装错误?

20

如何在PKS (枢轴-容器-服务)上安装ApacheJ测量仪

15

用j测量仪进行特征测试

11

如何用JPOS库对外围设备进行测试和仿真

32
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文