strtol中的别名参数

时间:2013-02-14 16:39:18

标签: c restrict-qualifier strtol

以下是根据来自C11(n1570)的strtol声明§ 7.22.1.4的方式:

#include <stdlib.h>

long int strtol (const char *restrict nptr,
                 char **restrict endptr,
                 int base);

据我所知,restrict关键字意味着左侧*nptr引用的对象只能使用它或直接从它派生的值。

然而,许多程序员,甚至是经验丰富的程序员,都以下列方式使用strtol

#include <stdlib.h>

strtol (p, &p, 10);

在这种情况下,**endptr == **&p == *p == *nptr,行为未定义。是不是?

1 个答案:

答案 0 :(得分:8)

没有。无法通过**endptr中的strtol访问任何内容。只访问*endptr,一个完全独立的对象。