gpt4 book ai didi

c - 返回指向子数组的指针

转载 作者:行者123 更新时间:2023-11-30 18:12:39 24 4
gpt4 key购买 nike

假设我有一个函数,其参数为 char 数组,返回类型为 char*。我想返回一个指向参数数组的子数组的指针。

例如:char str[] = "hi billy bob";

我希望我的函数返回“billy bob”

假设在我的函数体内我能够获取索引我想要子数组开始的位置。

char* fun(const char s1[]) {
int index = a random int;
/* char *p = *(s1[index1]); */
return p;
}

我在处理注释掉的行时遇到问题。

最佳答案

简单地使用

const char *p = &str[index]; /* may also write p = str + index */
return p;

上面获取索引 index 处字符的地址——它是指向从此索引开始的 char 数组的指针。该字符串一直持续到第一个 '\0' 字符,即原始 str 的末尾。

在您的情况下,如果您希望输出为“billy bob”(请注意,除非修改字符串或返回新字符串,否则无法更改大小写),您应该设置 index = 3;.

当您想要获取 str 的子字符串时,它会变得更加复杂。然后,您必须设置 str[end_index]='\0' 或使用 malloc 分配新数组并复制相关部分。

有关两个语法选项的一些信息

在 C 语言中,表达式 a[i] 相当于 *(a+i)。即,获取指针 a,将其向前移动 i 个元素(在您的情况下为 char),然后返回结果地址处的元素。

如果在 a[i] 前面加上 & 运算符即可获取该字符的地址。因此&a[i]可以写成&*(a+i)。运算符“&”和“*”相互抵消,剩下 a+i

关于c - 返回指向子数组的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33050503/

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