strtol中的别名参数

md5*_*md5 6 c strtol restrict-qualifier

这是如何strtol根据§ 7.22.1.4C11(n1570)声明:

#include <stdlib.h>

long int strtol (const char *restrict nptr,
                 char **restrict endptr,
                 int base);
Run Code Online (Sandbox Code Playgroud)

据我所知,restrict关键字意味着左边界引用的对象*nptr只能使用它或直接从中获取的值.

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

#include <stdlib.h>

strtol (p, &p, 10);
Run Code Online (Sandbox Code Playgroud)

在那种情况下,**endptr == **&p == *p == *nptr行为是未定义的.这样对吗?

R..*_*R.. 8

没有.没有通过**endptrin 访问strtol.仅*endptr访问完全独立的对象.