gpt4 book ai didi

c - 返回时指针崩溃 - C

转载 作者:行者123 更新时间:2023-11-30 17:48:21 26 4
gpt4 key购买 nike

我试图完全理解指针,因此我正在练习 Kenneth 的 A. Reek 书“Pointers On C”。我在处理第 6 章问题 1 时遇到了一个问题:“编写一个函数,在字符串中搜索给定字符集中的任何一个。您的函数应该与此原型(prototype)匹配

 char *find_char(char const *source, char const *chars);

这是我的问题:在这个 while 循环中,

while(*found_char_location != '\0'){

if(*found_char_location == *source_pt_cpy)
{
return found_char_location;
//return *source_pt_cpy;
}//end if

如果我尝试返回指针*source_pt_cpy,程序会给我一个段错误错误,但如果我返回指针*found_char_location,它会正常工作,这非常令人困惑,因为它们不具有相同的值吗?为什么其中一台会崩溃而另一台却不会?这是我的完整源代码。感谢您提前的帮助。

char *find_char(char const *source, char const *chars)
{

if(is_null(source, chars))
{

return NULL;
}//end if

char *found_char_location;
char *source_pt_cpy;

found_char_location = chars;

source_pt_cpy = source;

while(*found_char_location != '\0'){

if(*found_char_location == *source_pt_cpy)
{
return found_char_location;
//return *source_pt_cpy;
}//end if

source_pt_cpy++;

if(*source_pt_cpy == '\0')
{
chars++;
source++;
found_char_location = chars;
source_pt_cpy = source;
}//end if

}//end while

return NULL;
}//end function

最佳答案

它们指向的东西具有相同的值,但它们不在同一位置(或者您不需要检查它们的值是否相同)。

另外,使用 * 时要小心; *source_pt_cpy 不是一个指针,它是该指针所指向的内容,如果这就是您要返回的内容,那么使用该值作为指针很可能会导致段错误。

关于c - 返回时指针崩溃 - C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18626443/

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