gpt4 book ai didi

c - 从另一个函数保存指针地址

转载 作者:太空宇宙 更新时间:2023-11-04 02:32:37 25 4
gpt4 key购买 nike

我有一个函数接收指向 char 数组的指针。该函数递增指针,以便它遍历数组的 n 个长度。最后,该函数返回一个表示特定状态的 int。问题是我有其他函数也接收到指向同一个 char 数组的指针,它们需要从另一个函数停止的地方开始遍历它。所以我需要以某种方式保存指针的地址。我无法返回指针,因为该函数返回 int。我想知道我是否还能以某种方式解决这个问题,或者我需要使用结构来保存多种数据类型(int 和指针地址)。

这是一个这样的函数的例子:

int func(char *p) {
while(*p != 's')
p++;
return (*p == 's') ? 1 : -1
}

最佳答案

您可以编辑指针:

// The ** means a pointer to a pointer, you can now edit the pointer.
int func(char **p) {
// Mauybe check for the end of the string here as well.
while(*(*p) != 's') {
// We dereference our pointer and edit it here.
(*p)++;
}
return (*(*p) == 's') ? 1 : -1
}

在此函数结束时,您的p 将指向循环停止的位置。你可以这样调用它:

char *p = someString;
int myInt = func(&p);

如果函数签名是固定的,那么如果不使用全局变量或第二个函数中的相同循环来“重新找到”这个位置,这是不可能的。

关于c - 从另一个函数保存指针地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41269196/

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