C - 指针算术

标签 c pointers

在下面的代码中:

int strlen(char *s){
    char *p = s;

    while(*p++ != '\0');

    return p - s;
}

为什么上面的评估与此不同:

int strlen(char *s){
    char *p = s;

    while(*p != '\0') p++;

    return p - s;
}

据我了解,表达式会先求值,然后递增。

最佳答案

在第一个代码中,无论 while() 条件为真还是假,p 都会递增。

在第二段代码中,p 仅在 while 条件为真时递增。

关于C - 指针算术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17636760/

相关文章:

C++ 整数到指针的转换

c - C套接字编程中不兼容的指针类型转换警告

c - 如何从c中的双向链表中删除节点

C 读取行并对数据排序

c - a+=b 和 a=a+b 之间的性能差异

c# - Linux中是否有系统API来提供对文件的原子写操作

c - 使用 strncpy() 复制 const char *

c - 如何在c中对双指针进行字母顺序排序?

与指针程序的混淆(c编程)

将数组的指针更改为更大的数组