c - 将 ("text"+1) 参数传递给 C 中的 Strlen 函数。为什么输出 3?

标签 c

我无法理解为什么这个参数的输出到 strlen 函数 3。

我尝试将值从 1 更改为 2,3。我尝试将“文本”更改为“textt”。 我观察到的模式是输出是这样的 字符串中的字符数 - 数值

例如,如果我使用 2 而不是 1。答案是 4 - 2 = 2

对于 +1,它给出 4 - 1 = 3。

我对此感到困惑。请帮助我理解。 谢谢

#include<stdio.h>
#include<string.h>

int main(void)
{
    char str[] = "Text";
    printf("%ld %ld \n", strlen(str+4), strlen("text"+1));
    return 0;
}

最佳答案

语法 "string_literal"+ N 将产生一个指针 N 从文字开始处向上的字节。 "test"+1 指向字符串"est",长度为3。

关于c - 将 ("text"+1) 参数传递给 C 中的 Strlen 函数。为什么输出 3?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56707900/

相关文章:

使用 strcmp 和嵌套循环检查数组的值

c - 将十六进制字符串转换为 ASCII 值的函数导致段错误

c - 在 Mac OS X 上将 GNU 科学库链接到 R

objective-c - Hello World Objective-C 和 Xcode 中的错误

c - 错误: struct sockaddr_un' has no member named 'sun_port'

c - 如何确定哪个进程正在使用队列?

使用 open() 或 creat() 创建的文件设置的权限比我要求的要少

c - 如何在没有正则表达式的情况下用逗号(可选)后跟空格来拆分字符串?

C:将华氏度转换为摄氏度

C - 读取文件中的结构