gpt4 book ai didi

c - 如何从指针中减去字符数组?

转载 作者:行者123 更新时间:2023-12-04 11:54:50 24 4
gpt4 key购买 nike

所以,我开始熟悉C,此时我正在尝试理解指针。我从 here 得到以下代码,但我无法理解,如何从指针中减去字符数组。

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

main()
{
char s[30], t[20];
char *found;

/* Entering the main string */
puts("Enter the first string: ");
gets(s);

/* Entering the string whose position or index to be displayed */
puts("Enter the string to be searched: ");
gets(t);

/*Searching string t in string s */
found=strstr(s,t);
if(found)
printf("Second String is found in the First String at %d position.\n",found-s);
else
printf("-1");
getch();
}

指针不只是给定变量/常量的地址吗?当减法发生时,字符数组会自动假定,因为操作发生在指针上是减去它的地址?我在这里有点困惑。

提前致谢。

最佳答案

假设您对表达式 found-s 感到疑惑,那么您将减去两个指针。

数组自然会退化为指向其第一个元素的指针。这意味着 s 等于 &s[0],这就是这里发生的事情:found-s 等于 found - (&s[0])

并且减法有效,因为 found 指向数组 s 中的一个元素,所以指针是相关的(这是一个要求用于指针减法)。结果是两个指针之间的差异(以元素为单位)。

关于c - 如何从指针中减去字符数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60095585/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com